Typescript 元祖

元祖與數組結構上相似,待會你就知道了。git

舉個例子

// tuple.ts
let tuple: [string, number];
tuple = ['pr', 30];

let tuple1_1: [string, number] = ['pr', 30];

let tuple1_2: [string, number] = ['pr'];

let tuple1_3: [string, number];
tuple1_3 = ['pr', 30, 18];


// 0.0.8/tuple.ts:6:5 - error TS2741: Property '1' is missing in type '[string]' but required in type '[string, number]'.
    // 6 let tuple1_2: [string, number] = ['pr'];
     
// 0.0.8/tuple.ts:9:1 - error TS2322: Type '[string, number, number]' is not assignable to type '[string, number]'.
    // Types of property 'length' are incompatible.
    // Type '3' is not assignable to type '2'.
    // 9 tuple1_3 = ['pr', 30, 18];
複製代碼

經過例子,能夠發現直接對變量類型定義並賦值的時候,不能多也不能少(挺熟悉的吧)github

問:多傳確定是不可能的了,若是少傳能夠麼?typescript

本文開篇咱們不是說元祖和數組結構相似麼,試下下標賦值數組

// tuple2.ts
let tuple2: [string, number];
tuple2[0] = 'pr';

let tuple2_1: [string, number];
tuple2_1[1] = 30;
複製代碼

這波操做 666。post

新增元素

// tuple3.ts
let tuple3: [string, number] = ['pr', 30];
tuple3.push(18);
tuple3.push('pr 18');

tuple3.pop();
tuple3.unshift('pr is a jser');
tuple3.unshift(null);
tuple3.unshift(undefined);

tuple3.unshift(false);

// 0.0.8/tuple3.ts:10:16 - error TS2345: Argument of type 'false' is not assignable to parameter of type 'string | number'.
    // 10 tuple3.unshift(false);
複製代碼

能夠發現,添加元素的類型只能是 string | number(添加 false 報錯了),下個定論元祖添加元素的類型只能是元祖類型的聯合類型ui

本次代碼 Githubspa

你能夠...

上一篇:Typescript 內置對象code

下一篇:Typescript 枚舉對象

目錄:Typescript 小書之入門篇ip

相關文章
相關標籤/搜索