/**
* 對象類型 -- 接口
*/
//在面向對象的語言中,接口(interfaces)是對行爲的抽象,而具體如何行動需要類(class)去實現
//在Ts中的接口是非常靈活的概念,除了對行爲抽象之外,他還對形狀進行了描述
//1.
interface Person {
name: string;
age: number;
}
//變量使用接口時,形狀必須和接口相同,或多或少、類型不同都是不允許的
let tom: Person = {
name: "tom",
age: 12
};
//2.可選屬性 ?
interface Person2 {
name: string;
age?: number;
}
let tom2: Person2 = {
name: "tom2"
};
//3.任意屬性
interface Person3 {
name: string;
age?: number;
[proName: string]: any;
//[proName: string]: stingr; 這種情況,age就會報錯,因爲number不屬於string類型的子集
}
//一旦定義了任意屬性,他就會影響確定屬性和可選屬性的類型
//任意屬性之外的其他屬性的類型,也必須符合任意屬性的類型
let tom3: Person3 = {
name: "tom3",
age: 15,
gender: "any"
};
//4.只讀屬性
interface Person4 {
readonly id: number;
name: string;
}
let tom4: Person4 = {
id: 12,
name: "tom4"
};
tom4.name = "tom44";
//只讀的約束屬性在於第一次給對象賦值的時候,而不是給只讀屬性賦值的時候
//tom4.id = 123; 會報錯
TS對象類型 -- 接口(interface)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.