TS interface 接口与type的区别?

tsc --init 初始化环境

tsc --demo.ts ---> demo.js

ts-node 依赖安装 ts-node demo.ts

interface Person {
    // readonly name: string, // 代表这个属性是可读,不可写
    name: string,
    age?: number, // 代表这个属性可有可无
    [propName : string] : any, // 代表除了name以外,还可以有其他的参数,可以是任何值的字符串类型
    say() : string // 还可以传方法
}

interface Teach extends Person {
    teach(): string
}
// 定义函数类型interface
interface SayHi {
    (word: string) : string
}
const say: SayHi = (word) => {
    return word
}


const getPersonName = (person: Person) => {
    console.log(person.name)
}
const setPersonName = (person: Teach, name: string) => {
    person.name = name
}
const person = {
    name: 'll',
    sex: 'male',
    say() {
        return 'sss'
    },
    teach() {
        return 'teach'
    }
}

getPersonName(person)
setPersonName(person,'ll')


// interface和type的主要区别?


// type可以直接表示一个String, 基本类型
type Person = string

// interface只能代表函数和对象,无法代表基础类型,能用接口尽量用接口,实在不行再用type
interface Person {
    name: string
}


2、type可以定义联合类型,interface不行
interface Dog {
    abc: string
}
interface Cat {
    efg: number
}
type Pet = Dog | Cat

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值