2016-12-10 4 views
2

Код ниже не удался. TypeScript (ошибочно) считает, что возвращаемый тип равен string и позволит вам называть метод charAt, когда он фактически является number.Тип возвращаемого типа для перегруженных функций, TypeScript

Есть ли способ улучшить код, чтобы TypeScript обнаружил ошибку?

function fn(s: number): number 
function fn(n: string): string 
function fn(arg: any): any { return 0 } 

fn("hi").charAt(0) 

ответ

0

Если вы скажете Машинопись, что-то истинно, тогда предполагается, что вы говорите правду.

Просто удалите function fn(n: string): string, чтобы обнаружить эту ошибку. Определите, что на самом деле истинно.

Игнорирование тестового случая, базовый регистр для перегрузки метода не определен правильно. Ссылаясь на https://www.typescriptlang.org/docs/handbook/functions.html#overloads , базовый корпус должен быть объявлен как function fn(arg):any. Обратите внимание на отсутствие типа параметра.

Это все еще не увидит данный код как ошибку, так как из заданного параметра выводится перегрузка fn(n:string):string.

 Смежные вопросы

  • Нет связанных вопросов^_^