typescript - 推断的泛型返回类型接受具有未知属性的对象
问题描述
考虑以下:
function returnObject<T>(input: T, processor: (input: T) => T): T {
return processor(input);
}
type MyObject = {
foo: number;
};
const myObject: MyObject = { foo: 0 };
const processedObject: MyObject = returnObject(myObject, (input) => ({
...input,
bar: 1,
}));
console.log(processedObject);
这将构建并运行,输出:
{ foo: 0, bar: 1 }
我遇到的问题是它不应该构建。的第二个参数returnObject
是将bar
属性添加到结果中,我希望这会引发类型错误,因为bar
它不是MyObject
. 事实上,检查processedObject
tsserver 中的类型,产生MyObject
- 所以看起来 Typescript 实际上被愚弄了,认为它是MyObject
基于推断类型的有效(无论有没有明确的: MyObject
after ,行为都是相同的const processedObject
)。
我不确定这是否是 Typescript 中的错误,但对我来说这似乎不是预期的行为?
解决方案
推荐阅读
- css - 通过 SASS 迭代 props 一个类
- javascript - HTML 清空 div 内容
- powershell - 如何获取下载链接返回的文件名?
- redirect - 非标准 HTTPS 端口的 VirtualBox 端口重定向问题
- javascript - 使用 Ajax 获取数据未定义
- reactjs - 如何将参数传递给 reactJS 应用程序
- mysql - 我有 2 个数据库查询,并希望将它们作为一个查询
- google-colaboratory - 如何删除 google colab 标准路径中的文本文件?
- javascript - 如何在同一字符串中打印单引号和双引号?
- php - 如何防止来自两个不同 Laravel 项目的会话共享?