0%

typescript(接口)


参考 TypeScript Handbook(中文版)

没有记录变量声明这一节,看了下其实是对 JavaScript 为何推荐使用 let,const 而非 var 进行的简要介绍。个人推荐去看 let 和 const 命令

进入今天的正题,TypeScript 所谓的接口到底是啥,他与 Java 的接口是差不多的吗?我匆匆的浏览一了一遍,感觉他并不是像 Java 那样为了多态而存在的,他的存在已然是为了方便类型检查, 感觉是对传参时进行控制,就像文档所说的

TypeScript的核心原则之一是对值所具有的结构进行类型检查。 它有时被称做“鸭式辨型法”或“结构性子类型化”。 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。

简单例子

用接口表示一个对象必须包括一个属性 name 且 类型为 string

1
2
3
4
5
6
7
8
9
10
11
interface nameType {
name: string;
}

function printName(person: nameType) {
console.log(person.name)
}

let personW = {name: 'laoWang', sex: 'man'};

printName(personW);

可选属性

大概就是一个对象可能包括一个属性为 XXX 且其类型为 XXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
interface nameType {
name: string;
sex?: string;
height?: number;
}

function createPerson(personConfig: nameType): {name: string; height: number}{
let say = {sex: 'female', height: 166, description: ''};
if(personConfig.sex){
say.sex = personConfig.sex;
}
if(personConfig.height){
say.height = personConfig.height;
}
if(personConfig.name) {
say.name = personConfig.name;
}

say.description = `this is ${personConfig.name}, is a ${say.sex} and ${say.height} height`;
return say
}


let personW = createPerson({name: 'xiaoWang'; height: '180'});