关于Typescript的构造函数简单的学习

211 阅读2分钟

文章学习内容来自 方应杭 《TS全解》

No.13P && No.14P

1、 在一般情况下Ts的parmas检测并不严谨 返回值会检查但是 参数并不检查,同时参数可以给少但是不能给多。

const a :FnA = (并不需要参数也可以通过检查 )=>{ return 123 }

const a :FnA = (a:1,|| b:2 ||  c:3 X) => { return 123} 
这样是无法通过的,因为类型中 参数并没有三个 只有两个 所以最多只能拥有2个参数

2、关于 回传 void | undefined | null Ts并不像Js 在没有回传的函数中 就是回传void 在Js中如果没有回传则自动会在函数中生成 return undefined

3、箭头函数不支持this 需要声明一个支持this的箭头函数 需要先声明

type Person = {
    name:string
    age:number
    sayHi:sayHi
}
type FnWithThis = (this:Person,name:string) => void
const sayHi: FnWithThis = function(){console.log('hi' + this.name) }
只有function才能有this 用箭头则指向globalthis
现在的this则指向Person中的name

sayHi('Jack') 
//这样是无法调用的,因为this的返回类型是void 必须包装sayHi到一个object中

const x:Person = {
    name:'frank',
    age: 18,
    sayHi: sayHi
    //这里的sayHi 在Person的类型中并没有 所以在Person中也需要添加sayHi:sayHi
}

x.sayHi('Jack') 
//这样就可以正常调用sayHi 亦或者 sayHi.call(x, 'Jack')
如果使用sayHi.call(x, 'Jack') 则可以不需要在Person中添加sayHi:sayHi

4、以上的普通对象、数据对象、函数对象以外的对象描述则用class

    const d:Date = new Date()
    const r: RegExp = /ab+c/
    const r2: RegExp = new RegExp('ab+c')
    const m: Map<string, number> = new Map()
    m.set("xxx",2)
    const wm: WeakMap<{name:stirng}, number> = new WeakMap()
    const s:Set<number> = new Set()
    const ws: WeakSet<object> = new WeakSet()
    // WeakMap&& WeakSet 有约束泛型第一个参数固定时object 
    // 一般Weak开头都是有约束泛型