gpt4 book ai didi

typescript - 为什么类型断言的验证不如类型声明那么强?

转载 作者:行者123 更新时间:2023-12-02 02:25:36 25 4
gpt4 key购买 nike

给定以下界面:

interface Request 
{
name: string;
email: string;
}

我本以为以下代码行在设计时的功能是相同的:

var request1: Request = {name: "John"};
var request2 = {name: "John"} as Request;

但事实并非如此。第二行编译,而第一行提示 email属性(property)丢失。

如果 Typescript 认为必须指定类型的所有非可选属性,为什么它不提示使用 as Request 的类型断言在缺少属性的对象上。

是否有一种转换语法可以强制执行这种更强的类型? (<Request>(...) 语法也不这样做。)

最佳答案

类型断言(as Request 语法的 <Request> 语法)的目的是告诉 typescript “我比你更了解,所以不要在这里检查我的工作”。因此,类型检查或多或少被关闭。它仍然进行非常宽松的类型检查,以排除更严重的情况,但这不会捕获您所遇到的情况。 (如果它确实找到了某些东西,您可以通过执行 as unknown as Request 将其完全关闭)。

And is there a casting syntax that would enforce this stronger typing?

如果您想要严格类型,则可以使用第一行中的冒号语法。

var request1: Request = {name: "John"};

关于typescript - 为什么类型断言的验证不如类型声明那么强?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65689171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com