interface IFullname {
firstname:string
lastname:string
}
type Ifn = (obj:IFullname) => string
const fullname:Ifn = ({firstname,lastname}):string => {
return firstname + lastname
}
type A = {
name: string
}
type B = {
age: number
}
type C = A | B
let c: C = {
age: 18
}
interface A {
name: string
age: number
}
interface B {
sex: number
}
interface C extends A, B {
height: number
}
let c: C = {
name: 'zhangsan',
age: 18,
sex: 0,
height: 180
}
4. type 不能重名,interface 重名可以合并
type A = {
name:string
}
type A = {
}
interface A {
name: string
}
interface A {
age: number
}
let a: A = {
name: 'lisi',
age: 18
}
5. type 可以使用循环和条件,interface 不行
//其他情况无所谓,可以互换(函数类型一般使用 type 来声明)
数字索引
interface IArr {
[key:number]:any
}
let arr:IArr = [1,2,3]
或者
interface IArr {
[key: number]: any
}
let arr: IArr = {
0: 1,
1: 2,
2: 3
}
interface Person {
name: string
age: number
}
type PersonName = Person['name']
interface Icar {
color: string,
speed: number
}
type A = keyof Icar
let a:A = 'color'
let b:A = 'speed'
let c:A = 'speed1'
interface Icar {
color: string,
speed: number
}
type A = keyof Icar
type ValueOf = Icar[A]
interface Person{
name:string
age:number
son:{
name:string
age: number
}
}
type SonNameAgeType = Person['son']['age']
interface Chinese{
toSpeekChinese():void
}
interface English{
toSpeekEnglish():void
}
class Speak implements Chinese,English{
toSpeekChinese(){
}
toSpeekEnglish(){
}
}