網站搜尋

如何在 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'.