标签:return name ts number 保护 animal 类型 input interface
类型保护:就是一些表达式或者关键字在编译时候就能确定在某个作用域内变量的类型 关键字有:if-else typeof instanceof prop in obj a is b is语法typeof instanceof
interface IDoubleFunc { (input: string | number | boolean): void } //typeof关键字来确定变量类型 const double1: IDoubleFunc = input => { if (typeof input === 'string') return input + input if (typeof input === 'number') return input * 2 if (typeof input === 'boolean') return !input } // instanceof class Animal { name: string; constructor(name: string) { this.name = name } } class Bird extends Animal { swing: number = 2 } interface IGetNameFunc { (animal: Animal): void } const getName: IGetNameFunc = animal => { if (animal instanceof Bird) return animal.swing if (animal instanceof Animal) return animal.name //到了这里只能点name了 没有swing提示了 }
prop in obj/obj.hasOwnpropery(prop)
interface IBird { swing: number } interface IDog { leg: number } interface IGetNumberFunc { (x: IBird | IDog): number } const getNumber: IGetNumberFunc = x => { if ('swing' in x) return x.swing return x.leg } getNumber({ swing: 2 })
x is 类型
interface IBird { name: 'bird', leg: number } interface IDog { name1: 'dog' leg: number } type Animal = IBird | IDog interface IGetAnimal { (animal: Animal): void } function isBird(x: Animal): x is IBird { return x.leg === 2 } const getAnimal: IGetAnimal = animal => { if (isBird(animal)) console.log(animal.name); else console.log(animal.name1); } getAnimal({ name: 'bird', leg: 2, })
标签:return,name,ts,number,保护,animal,类型,input,interface 来源: https://www.cnblogs.com/xiaoliziaaa/p/14991291.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。