【TypeScript】ts 学习之路 —— type 与 interface

一、type 与 interface 的定义

type Person = {
    name: string;
    age: number;
    sex?: string;
}

interface People {
    name: string;
    age: number;
    sex?: string;
}


function introduction (person: Person | People) {
    console.log('我名字叫' + person.name);
    console.log('我今年' + person.age);
    person.sex ? console.log('是个' + person?.sex + '人') : null;
}

introduction({name: '毛叔叔', age: 18});
// '我名字叫毛叔叔'
// '我今年18'

二、type 与 interface 的定义扩展

type PersonName = {
    name: string;
}

type PersonAge = {
    age: number;
}

type Person = PersonName & PersonAge & {
    sex?: string;
}

// type Person = {
//     name: string;
//     age: number;
//     sex?: string;
// }

interface PeopleName {
    name: string;
}

interface PeopleAge {
    age: number;
}

interface People extends PeopleName, PeopleAge {
    sex?: string;
}

// interface People {
//     name: string;
//     age: number;
//     sex?: string;
// }


function introduction (person: Person | People) {
    console.log('我名字叫' + person.name);
    console.log('我今年' + person.age);
    person.sex ? console.log('是个' + person?.sex + '人') : null;
}

introduction({name: '毛叔叔', age: 18, sex: '男'});
// '我名字叫毛叔叔'
// '我今年18'
// '是个男人'

三、type 与 interface 的不同之处

type Person = {
    name: string;
}

type Person = {
    age: number;
}
// Duplicate identifier 'Person'.(重复标识符“人员”)
// 不能重复定义 type 

interface People {
    name: string;
}

interface People {
    age: number;
}

// interface People {
//     name: string;
//     age: number;
// }

// 重复定义 interface 会默认将其扩展在一起

function a (p: People) {
    console.log(p.name, p.age)
}

a({ name: '毛叔叔', age: 18 })

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值