typescript - 添加多种类型时,Typescript函数抱怨参数类型不可分配
问题描述
我有一个非常简单的功能:
function foo<T>(input: T, def: T) : T {
return !!input ? input : def;
}
所以打电话
foo(6, 7);
foo("h", "i")
没关系。
现在如果我改为
function foo<T>(input: T | null | undefined, def: T) : T {
return !!input ? input : def;
}
我收到错误,例如“ '6' 类型的参数不可分配给'7 | null | undefined'类型的参数。 ”和“ '“h”' 类型的参数不可分配给'“i”类型的参数| null | 未定义'。 ”
但如果我这样称呼它
const h: string = "h";
const i: string = "i";
foo(h, i);
然后就可以了。
这是为什么?
解决方案
是的,它似乎只在早期版本上?
是的,版本 3.5.1 及以下是确切的链接
在这个例子中:
function foo<T>(input: T | null | undefined, def: T) : T {
return !!input ? input : def;
}
foo(6, 7);
foo("h", "i");
泛型参数始终是第二个参数的字面量,这就是引发错误的原因。
在以后的版本中,null | undefined
不再影响泛型参数。
推荐阅读
- javascript - 使用猫鼬模型的 Node.js 函数中的内存泄漏
- python-3.x - 如何处理“剩余连接槽留给非复制超级用户”?
- visual-studio - Visual Studio:选择从现有代码创建新项目后的空白窗口
- django - ('IM004', "[IM004] [unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_HENV failed (0) (SQLDriverConnect)")
- mysql - 为什么 MySql 查询需要时间来返回结果?
- python - cs50 pset6/dna - 我在网上找到了找出字符串中最大连续子字符串的代码;请解释它的正则表达式部分
- javascript - 如何使用 Action/Flux [JS/REACT] 处理 onClick
- python - 在 python 3 解析 wsdl 响应的问题
- java - SwaggerConfig 中的属性值必须是常量
- python - 向变量掩码添加类型提示