返回类型安全的重载函数TypeScript

时间:2016-12-10 03:20:25

标签: typescript type-safety

下面的代码会失败。 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)

1 个答案:

答案 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重载,因此仍然不会将给定代码视为错误。