下面的代码会失败。 TypeScript会(错误地)认为返回类型为string
,并允许您在其上调用charAt
方法,当它实际上是number
时。
有没有办法改进代码,以便TypeScript检测到错误?
function fn(s: number): number
function fn(n: string): string
function fn(arg: any): any { return 0 }
fn("hi").charAt(0)
答案 0 :(得分:0)
如果你告诉Typescript某事是真的,那么它会假设你说实话。
只需删除function fn(n: string): string
即可检测到该错误。只定义实际上是什么。
忽略测试用例,未正确定义方法重载的基本情况。
参考https://www.typescriptlang.org/docs/handbook/functions.html#overloads
基本情况应声明为function fn(arg):any
。注意参数上没有类型。
由于从给定参数中推断出fn(n:string):string
重载,因此仍然不会将给定代码视为错误。