TypeScript 學(xué)習(xí)筆記

TypeScript是JavaScript 的一個超集,支持 ECMAScript 6 (ES6)標(biāo)準(zhǔn)
官方文檔鏈接:https://www.tslang.cn/docs/handbook/basic-types.html

基本數(shù)據(jù)類型

類型.png
代碼示例

變量定義

let a : number = 10; 
a = '123'; // 此行代碼會報(bào)錯
//a只能是number類型的數(shù)據(jù)。 Type 'string' is not assignable to type 'number'

let b = 10//當(dāng)聲明和賦值同時(shí)發(fā)生時(shí),ts將自動定義b為number類型的數(shù)據(jù)

在函數(shù)定義上的應(yīng)用

function sum(a:number, b:number): number {// 參數(shù)和返回值均定義為number
  return a + b;
}

字面量

let a : 10; // 類似于常量定義,a只能等于10
let gender : "male" | "female"; // 用|連接多個類型(聯(lián)合類型)

any

let d: any; //相當(dāng)關(guān)閉了TS的類型檢測,不推薦使用
d = 10;
d = 'Hello'

note:any于unknown的區(qū)別:any的變量可以復(fù)制給其他任何數(shù)據(jù)類型,造成數(shù)據(jù)污染。unknown實(shí)際上就是一個類型安全的any,不能直接賦值給其他的變量

let a: any = 'hello';
let b: unknown = 10;
let c: boolean = a; //不會報(bào)錯
let d: number = b; //即使都賦值number,unknown也會報(bào)錯
// Type 'unknown' is not assignable to type 'number'

賦值unknown給其他變量的解決辦法

let b: unknown = 10;
//1. 數(shù)據(jù)類型判斷
if (typeof e === 'number') {
  let s: number = b;
}
//2. 類型斷言: as or <type>
let s: number = b as number; // 用來告訴解析器變量的實(shí)際類型
//或者
let a: number = <number> b;

never

function reportError(): never {
  throw new Error('報(bào)錯了!')// 程序立即結(jié)束,沒有任何返回值
}

note:null 和 undefined
默認(rèn)情況下,null和undefined是所有類型的子類型。 就是說你可以把null和undefined賦值給number類型的變量。當(dāng)你指定了--strictNullChecks標(biāo)記,null和undefined只能賦值給void和它們各自。

object

let a: object;
a = {};
a = function () {};

//定義對象中包含的屬性
//語法: {屬性名: 屬性值,...}
let b : {name: string};
b = {name: 'Jack'};

//可選屬性,屬性后面加?
let b: {name: string, age?: number}; 
b = {name: 'Jack', age: 11};

let c: {name: string, [propName: string]: any}; // 變量只要求包含屬性name, 其中propName類似于占位符,也可以是其他命名
c = {name: string, age: 11, gender: 'male'}

// 設(shè)置函數(shù)類型的結(jié)構(gòu)聲明
let d: (a: number, b: number) => number;

數(shù)組

// 兩種表達(dá)方式
//1. 類型[]
let a: number[];
//2. Array<type>
let b: Array<number>;

元組

//元組就是固定長度的數(shù)組
// 語法:[類型1, 類型2]
let a: [string, number];
a = ['hello', 123];

枚舉

// 列舉所有可能的數(shù)據(jù)類型
let i : {name: string, gender: number};
// 自定義一個枚舉
enum Gender {
  Male = 0,
  Female = 1
}

自定義類型(類型的別名)

type myType = 1|2|3; // 類型的別名
let a: myType;
a = 1;

TS編譯選項(xiàng)

TODO

面向?qū)ο?/h1>

  1. 類的聲明
class Person {
  // 屬性
  name: string = 'Jack'; // 1. 實(shí)例屬性: 必須通過new對象來讀取屬性值
  static age: number = 18; // 2. 靜態(tài)屬性: 在屬性前使用static關(guān)鍵字可以定義屬性類型. Person.age
  readonly gender: number = 0; // 只讀屬性
  //方法
  run() { }
}
  1. 構(gòu)造函數(shù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容