Я не могу понять что-то о выводе типа TypeScript.Я думал, что это должно быть допустимо и не требует от меня указывать тип T
:
export const deflt = <T>(val: (T | undefined | null), defaultVal: T): T => {
if (val === undefined || val === null) {
return defaultVal;
}
return val;
}
function maybeLabelName(name: string | undefined) {
return deflt(name, 'untitled');
}
Вызов deflt завершается неудачно со следующей ошибкой:
Argument of type 'string | undefined' is not assignable to parameter of type '"untitled" | null | undefined'.
Type 'string' is not assignable to type '"untitled" | null | undefined'. [2345]
Iможно исправить, изменив вызов deflt
на один из следующих:
// Option 1:
return deflt<string>(name, 'untitled');
// Option 2:
const s: string = 'untitled';
return deflt(name, s);
Разве TypeScript не должен автоматически выводить тип string
?