假設此代碼:型模塊是不能分配給輸入的LoginModule
class Module{
contructor(){
// some logic here
}
}
class LoginModule extends Module{
start(){}
}
class Server{
modules: Module[];
constructor(modules?: Array<{new():Module}>){
for(var moduleConstructor of modules){
var module = new moduleConstructor();
this.modules.push(module);
}
}
}
var server = new Server([LoginModule]);
var loginModule:LoginModule = server.modules[0];
爲什麼我收到錯誤:
Type 'Module' is not assignable to type 'LoginModule'. Property 'start' is missing in type 'Module'.
我需要有從Module
再延伸類對象的陣列我想打字稿來識別對象類型。
我可以改變
var loginModule:LoginModule = server.modules[0];
到
var loginModule:Module = server.modules[0];
但隨後我會在IDE寬鬆智能感知提示。
以前從未聽說過「as」操作符。 Thanx,這正是我需要的。 – SET
如果'server.modules [0]'不是'LoginModule'會怎麼樣 - 沒有什麼可強制執行的。如果您必須始終擁有一個'LoginModule',那麼您應該簡化您的代碼,並在'Server'構造函數中需要一個'LoginModule'。 – Fenton
as運算符是** assert ** ......這意味着,我們說:「我作爲開發人員知道的比你更多,Typescript。我斷言你,這背後真的是我想要的類型......」如果這不是真正的,在運行時你可以真正體驗像方法未定義的場景...希望它有點幫助...和最終指導** https://basarat.gitbooks.io/typescript/content/docs/types/type -assertion.html ** –