接口 interface
在TypeScript中具被,使用接口來定義對象的類型冷冗,對「對象的形狀(Shape)」進行描述
demo
interface Person {
name: string;
age: number;
[index: string]: any; //任意屬性
sex?: number; // 可選屬性
// readonly id: number 只讀屬性
//setNum(x:number):number 定義函數(shù)
}
const person: Person = {name: 'ddd', age: 5 }
//如果是其他的類型會報錯
接口實現(xiàn)類
interface Person {
name: string;
age: number;
}
class Person implements Person {
age: number = 18
name:string = ''
}
export { Person }
const people = new Person()
people// { age:18, name: ' ' }
接口繼承
interface People extends Person {
sex: string
}
const p: People = {
name: 'ddd', age: 22,sex: 'd'
}
數(shù)組類型
「類型 + 方括號」表示法
let arr: number[] = [1,2,3]
數(shù)組泛型
let arr: Array<string> = ['2', 'ewr']
內置對象
JavaScript 中有很多內置對象嫩挤,它們可以直接在 TypeScript 中當做定義好了的類型
ECMAScript 的內置對象
let b: Boolean = new Boolean(1);
let e: Error = new Error('Error occurred');
let d: Date = new Date();
let r: RegExp = /[a-z]/;
DOM 和 BOM 的內置對象
let body: HTMLElement = document.body;
let allDiv: NodeList = document.querySelectorAll('div');
document.addEventListener('click', function(e: MouseEvent) {
// Do something
});
函數(shù)類型
重載
重載允許一個函數(shù)接受不同數(shù)量或類型的參數(shù)痒钝,作出不同的處理
使用重載
function reverse(x: number): number;
function reverse(x: string): string;
function reverse(x: number | string): number | string {
if (typeof x === 'number') {
return Number(x.toString().split('').reverse().join(''));
} else if (typeof x === 'string') {
return x.split('').reverse().join('');
}
}
類型斷言
類型斷言(Type Assertion)可以用來手動指定一個值的類型迅皇。
語法
<string>str
或
str as string
在他tsx 中只能使用最后一種
聲明文件
declare