TypeScript 介面
1. 介面作用
TypeScript的核心原則之一是對值所具有的結構進行型別檢查
在TypeScript裡,介面的作用就是為這些型別命名和為你的程式碼或第三方程式碼定義契約。
2. interface 實現介面
interface labelValue{
label:string,
// 可選屬性
name?: string
}
// obj 代表一個物件,以label為屬性名,屬性值為字串
function printLabel(obj:labelValue){
console.log(obj.label)
}
// 傳參的時候可以寫name,也可以不寫
printLabel({label:'abc' })
printLabel({label:'abc', name: 'dou'})
3. 只讀屬性
只能獲取不能修改的屬性
interface labelValue{
// 設定只讀屬性
readonly age: number
}
function printLabel(obj:labelValue){
console.log(obj.age);
obj.age = 12; // 報錯
}
printLabel({age: 18})
4. 任意屬性
interface labelValue{
// 定義任意屬性:屬性名為string型別 屬性值為任意型別
[propName:string]: any
}
function printLabel(obj:labelValue){
console.log(obj.age);
obj.age = 12;
}
printLabel({age: 18})
5. 函式介面
interface SearchFunc { //定義一個介面
(source: string, subString: string): boolean;
}
let mySearch: SearchFunc; //定義mySearch型別為SearchFunc
mySearch = function(source, subString) {
return source.search(subString) !== -1;
}
// 相當於介面的屬性是函式的引數,返回值是介面的屬性值。
mySearch('a', 'b')
mySearch(1,2) // 報錯 引數必須數字符型別
6. 類介面
實現類介面的關鍵字是 implements;
利用類介面的設計可以規範出一個標準類最起碼所具備的屬性和方法
interface labelValue{
label:string,
// 可選屬性
name?: string
}
class Child implements labelValue{
constructor(){}
label: string;
name: 'dou'
}
7. 介面繼承介面
interface Parent{
name:string,
age: number
}
interface Child extends Parent{
hobby: string
}
let xiaoming:Child = {
name: 'xaioming',
age: 14,
hobby: 'playing'
}
也可以繼承多個介面
interface Child extends Parent, Parent1{
hobby: string
}
8. 混合型別介面
interface Counter {
// 函式引數為number型別,返回值為string型別
(start: number): string;
interval: number;
reset(): void;
}
function getCounter(): Counter {
let counter = <Counter>function (s: number) { };
counter.interval = 123;
counter.reset = function () { };
return counter;
}
let c = getCounter();
c(10);
c.reset();
c.interval = 5.0;
9. 介面繼承類
class Control{
private state: any
}
// 建立了一個新的介面, 該介面有一個私有屬性state 和一個select函式,該函式返回空
interface selectControl extends Control{
select(): void
}
class Button extends Control implements selectControl{
select(){}
}
// 報錯,缺少私有屬性state
class Images implements selectControl{
select(){}
}
相關文章
- TypeScript--介面TypeScript
- TypeScript(4)介面TypeScript
- TypeScript中的介面TypeScript
- TypeScript 函式介面TypeScript函式
- TypeScript 介面繼承TypeScript繼承
- TypeScript 介面繼承類TypeScript繼承
- TypeScript 類實現介面TypeScript
- [譯]Typescript : 類 vs 介面TypeScript
- TypeScript 介面 只讀屬性TypeScript
- TypeScript 介面 可選屬性TypeScript
- typescript探索(二)- 介面與類TypeScript
- TypeScript 混合型別介面TypeScript型別
- TypeScript介面與類的使用TypeScript
- TypeScript 可索引型別介面TypeScript索引型別
- TypeScript入門3:介面、多型TypeScript多型
- typescript 介面和物件型別(四)TypeScript物件型別
- TypeScript學習(四)—— 介面和泛型TypeScript泛型
- TypeScript 泛型介面和泛型類TypeScript泛型
- 淺談TypeScript型別、介面、裝飾器TypeScript型別
- TypeScript 簡明教程:介面、函式與類TypeScript函式
- 系統學習 TypeScript(六)——認識介面TypeScript
- chrome外掛: yapi 介面TypeScript程式碼生成器ChromeAPITypeScript
- typescriptTypeScript
- TypeScript 簡明教程:認識 TypeScriptTypeScript
- TypeScript 簡明教程:安裝 TypeScriptTypeScript
- 「極速上手TypeScript」TypeScript之PromiseTypeScriptPromise
- 「極速上手TypeScript」TypeScript進階“物件”TypeScript物件
- TypeScript In ICETypeScript
- TypeScript @typesTypeScript
- Vue with TypeScriptVueTypeScript
- TypeScript declareTypeScript
- Typescript basicTypeScript
- Why TypeScript?TypeScript
- Vuex and TypescriptVueTypeScript
- 理解TypeScriptTypeScript
- TypeScript IteratorsTypeScript
- CSS in TypescriptCSSTypeScript
- 初探 TypeScriptTypeScript