我在应用程序中经常遇到以下 Typescript 习惯用法。
interface something {
comment: string;
}
const f = <something>({ data: result }) => result.comment;
console.log(f({ data: { comment: "Hi Mom"} }));
它会按预期在控制台上生成“Hi Mom”。
我有两个基本问题:
result
并将其转换为 something
”,但我不明白这是如何实现的做到了这一点。 result
如何在函数调用中正确绑定?something
是一个隐藏的名称。据我所知,这是一种类型转换,而且我根本不明白类型转换是如何定义名称的,更不用说隐藏的名称了。有人可以启发我吗?
取我传递给你的对象的数据字段包含的值,称之为结果
是正确的,它被称为解构赋值。
并将其投射为某种东西
显然,在这个例子中,这只是一个错误,它什么也没做。这些称为“泛型类型”。我只能说这个例子应该是这样的,所以它以正确的方式使用泛型:
interface something {
data: {
comment: string;
}
}
const f = <T extends something>({ data: result }: T) => result.comment;
console.log(f({ data: { comment: "Hi Mom"} }));
没错,因为
something
被定义为接口和泛型类型,所以 tslist 抱怨