TS接口

作者: 郑无穷大 | 来源:发表于2018-10-22 21:44 被阅读0次

函数和方法的区别:

当一个函数是对象的属性时,这个函数为该对象的方法

接口就是用代码描述一个对象必须有什么属性(包括方法),但是有没有其他属性就不管了。

比如「一个电脑有 USB 接口」的意思是这个电脑能够插入 USB 设备,这个电脑其他的功能就随意了。

interface Human{
    name: string,
    age: number
}
只读属性
interface Human{
    readonly name: string,
    readonly age: number
}

最简单判断该用readonly还是const的方法是看要把它做为变量使用还是做为一个属性。
做为变量使用的话用 const,若做为属性则使用readonly。

可选属性
interface Human{
    name?: string,
    age?: number
}
interface Shape {
  head: string;
  body: string;
}
interface Human {
  readonly name: string;
  age: number;
  shape: Shape;
  likedGame?: Array<string>;
  say(word: string): void;
}

let frank: Human = {
  name: 'frank',
  age: 18,
  shape: { head: '〇', body: '口' },
  say(word: string) {
    console.log(`${this.name}: ${word}`);
  },
};

frank.say('你好');
传interface之外的(有个缺陷在传入函数或者方法的时候,若是可选的则不会报错)
interface SquareConfig {
    color?: string;
    width?: number;
}

function createSquare(config: SquareConfig): void {
    // ...
}

let mySquare = createSquare({ colour: "red", width: 100 });

那么,想要传入 Interface 之外的属性,可以受控:

使用类型断言
 let mySquare = createSquare({ width: 100, opacity: 0.5 } as SquareConfig);
使用索引签名
 interface SquareConfig {
     color?: string;
     width?: number;
     [propName: string]: any;
 }
使用临时变量(不推荐)

接口就是用代码描述一个对象必须有什么属性。

如果这个属性是函数怎么办?

interface Human{
    name: string,
    age: number,
    add(a:number, b:number): number
}

如果这个对象是函数怎么办?

interface SearchFunc {
    (source: string, subString: string): boolean;
}
如果这个对象是函数,而且这个对象的属性也是函数怎么办?
interface 二则运算 {
    (a: number, b: number): number;
    逆运算(a: number, b: number): number;
}
let fn = (): 二则运算 => {
    let x: any = function(a: number, b: number): number {
        return a + b;
    };

    x.逆运算 = function(a: number, b: number): number {
        return a - b;
    };
    return x;
}

let add: 二则运算 = fn();

console.log(add(1, 2));
如果这个对象是数组怎么办?
interface StringArray {
[index: number]: string;
}

let myArray: StringArray;
myArray = ["Bob", "Fred"];

let myStr: string = myArray[0];
接口可以继承
interface Shape {
    color: string;
}

interface Square extends Shape {
    sideLength: number;
}

let square = <Square>{};
square.color = "blue";
square.sideLength = 10;

接口可以继承两个接口(横向)
接口可以继承继承过的接口(纵向)

相关文章

  • 8、TypeScript 接口继承接口,类实现多接口

    1、ts类中只能继承一个父类2、ts类中可以实现多少接口,使用(,)号分隔3、ts接口中可以继承多个接口,使用(,...

  • TS接口

    函数和方法的区别: 当一个函数是对象的属性时,这个函数为该对象的方法 接口就是用代码描述一个对象必须有什么属性(包...

  • TS: 接口

    接口算是官方文档里的第一个知识点了,这篇文章会简单介绍 TypeScrip 里的接口。 类型 在说接口之前我们先来...

  • TS - 接口

    接口是对行为的抽象,由类来定义对象或函数的类型 初始化 tslint 配置规则 可选属性 A red tomato...

  • typeScript语法

    ts类型 ts联合类型使用或 ts定义任意类型any ts定义函数返回值的类型 ts中的类定义 interface接口

  • TypeScript基础知识

    命令 查看版本:tsc -v 运行ts文件:tsc xx.ts 数据类型 接口Interface 类和接口 泛型基...

  • TypeScript 学习笔记 之 接口与类

    接口 TS 中判断是否实现接口的核心原则是基于结构而不是基于名称的。即鸭子类型判断。 TS 中接口可以声明可选的接...

  • 【第7篇】TypeScript泛型的案例代码详解

    1、最简单泛型例子 Ts代码 Js文件 2、泛型类型与接口 Ts代码一 Ts编译js代码一 Ts代码二 Ts编译j...

  • umijs@use-request源码解读

    一、了解ts基本语法 涉及ts的变量声明、接口、类、函数、泛型等 ts语法知识[https://typescrip...

  • ng-alain中的st表格

    后端控制分页的st表格使用 数据列初始化 ts 后端接口获取data ts 表格分页设置 ts change回调 ...

网友评论

      本文标题:TS接口

      本文链接:https://www.haomeiwen.com/subject/lslnzftx.html