如果我從這個開始:
type Board = Array<Array<number>>;
然后,當我傳遞電路板時,這可以很好地進行型別檢查:
function boardWins(board:Board):boolean { ... }
但是當我真正需要創建一個板時,我會得到這個:
function createBoard():Board {
// How can I just instantiate a Board? "new Board()" throws an error
return new Array<Array<number>>();
}
回傳型別很好,這是我想避免的“新”呼叫中整個型別的冗余重新宣告。
如果我嘗試new Board()我得到:
'Board' only refers to a type, but is being used as a value here.
好的,是的,建構式是Board函式,沒有函式,但是當我實體化其中一個時,是否沒有語法糖來避免重復發明這個輪子的冗余和潛在錯誤?
謝謝你的幫助!
uj5u.com熱心網友回復:
您只需回傳看起來像您指定的型別的東西,即您可以回傳
return [[1, 2, 3]]
或者
return []
或者
return [[]]
但不是
return [1]
或者
return [["abc"]]
無需使用new Array,只需創建并回傳如上所示的內容。
uj5u.com熱心網友回復:
您正在創建的值只是一個空陣列。其余的語法都是關于給它你想要的型別,當你已經宣告了型別時,這不是必需的。
function createBoard(): Board {
return [];
}
不,沒有通用的方法來實體化任意的 TypeScript 型別。這對結構型別沒有意義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/373488.html
