typeScript学习-TS类型-接口

发布时间 2023-08-11 09:46:24作者: 空白格k

typeScript学习

接口:

定义:另一种定义对象类型的类型

接口应用场景:

  1、一些第三方包或者框架底层源码中有大量的接口类型

  2、提供方法的对象类型的参数时使用

  3、为多个同类别的类提供统一的方法和属性声明

如何定义接口:

继承接口:

新的接口只是在原来接口集成之上增加了一些属性或方法,这是就用接口继承

// 继承
// 宠物 interface Pet { name: string, love: number, health: number, toHeallth(): void, } // 狗 interface Dog extends Pet { strain: string, // 品种 guradHome(): void, }

 

可索引签名:

// 可索引签名
interface Product {
    name: string,
    price: number,
    account: number,
    [x: string]: any
}


let p: Product = {
    name: 'zhangsan',
    price: 100,
    account: 10,
    descri1: "ok",
    stockno: 1000,
    [Symbol('stockno1')]: 1000,
    100: 'abc',
    true: 1
}

interface Product2 {
    name: string,
    price: number,
    account: number,
    [x: number]: any
}

let p2: Product2 = {
    name: 'zhangsan',
    price: 100,
    account: 10,
    // descri1: "ok", // 错误
    // stockno: 1000, // 错误
    [Symbol('stockno1')]: 1000,
    100: 'abc',
    // true: 1, // 错误
}


interface Product3 {
    name: string,
    price: number,
    account: number,
    [x: symbol]: any
}

let p3: Product3 = {
    name: 'zhangsan',
    price: 100,
    account: 10,
    // descri1: "ok", // 错误
    // stockno: 1000, // 错误
    [Symbol('stockno1')]: 1000,
    // 100: 'abc', // 错误
    // true: 1, // 错误
}


interface Product4 {
    name: string,
    price: number,
    account: number,
    [x: string]: number | string
    // [x: string]: number // 错误
}

let p4: Product4 = {
    name: 'zhangsan',
    price: 100,
    account: 10,
    // descri1: "ok", // 错误
    // stockno: 1000, // 错误
    [Symbol('stockno1')]: 1000,
    // 100: 'abc', // 错误
    // true: 1, // 错误
}


export { }