interface 定义Person结构 interface Person {}
interface Person {
name: string;
age: number;
ping(ip: string): void;
}
type 定义Person结构 type Person = {}
type Person = {
name: string;
age: number;
ping(ip: string): void;
}
使用Person 类型
let user: Person = {
name:'max',
age:34,
ping(ip: string){
console.log('hi, ip is' +ip);
}
}
user.ping('102.101.122.22');
// output
// [LOG]: "hi, ip is102.101.122.22"
interface用于不同class之间的共有的属性和方法。使用implements,一个class可以实现多个接口,逗号拼接。
interface Greetable {
name: string;
greet(pharse: string): void;
}
class Person implements Greetable{
name: string;
age = 30;
constructor(n: string){
this.name = n;
}
greet(pharse: string) {
console.log(pharse + ' ' + this.name)
}
}
let user: Greetable = new Person('max')
user.greet('you are');
console.log(user)
output:
[LOG]: "you are max"
[LOG]: Person: {
"age": 30,
"name": "max"
}
readonly 可以在interface中使用。
public, private不能在interface中使用。error: 'public' modifier cannot appear on a type member.
interface 可以通过 extends 继承另一个interface
interface Named {
name: string;
}
interface Greetable extends Named {
greet(pharse: string): void;
}
使用interface 的定义 function Type
// type AddFn = (a: number, b:number) => number;
interface AddFn {
(a: number, b:number): number;
}
let add: AddFn;
add = (n1:number, n2:number) => {
return n1 + n2
}
interface 使用?定义可选参数
interface AddFn{
name?: string;
greet?(): number;
}
interface 编译成js没有任何输出,在js里面没有,ts里特有的。








网友评论