如何在 TypeScript 中編寫表示元組類型的介面?
很高興看到 TypeScript 1.3 的釋出,但如何寫一個介面來表示元組類型?
例如
var data: [string, number, number];
如何編寫一個介面 IData,以便我能夠通過編寫來做同樣的事情
var data: IData;
答案#1
我知道這是一個舊問題,但我認為你可以通過以下方法達成你想要的效果:
type IData = [string, number, number];
然後
var data: IData;
你可以在這個 TypeScript Playground 範例中看到這一點
答案#2
請注意,隨著一些新功能的到來,例如聯合類型,你大致上可以得到你想要的。規範的最新草稿中包含了類似的例子(見 https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#3.3.3 )
以下程式碼顯示了這可能的樣子範例:
interface KeyValuePair extends Array<string | number> { 0: string; 1: number; }
var x: KeyValuePair = ["test", 42]; // OK
var y: KeyValuePair = [42, "test"]; // Error
如果你從主分支獲取最新的代碼並編譯上述內容,你將看到它將對 'x' 的賦值識別為有效,而對 'y' 的賦值則識別為錯誤:
S:\src\TypeScript\bin>node tsc c:\temp\tuple.ts
c:/temp/tuple.ts(4,5): error TS2323: Type '[number, string]' is not assignable to type 'KeyValuePair'.
Types of property '0' are incompatible.
Type 'number' is not assignable to type 'string'.
