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>
類
- 類的聲明
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() { }
}
- 構(gòu)造函數(shù)
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() { }
}