interface Person {
name: string;
surname: string;
}
let person1: Person = {};
person1.name = "name"
person1.surname = "surname"
当我声明person1时,我得到这个错误:Type '{}' is missing the following properties from type Person
interface Person {
name: string;
surname: string;
}
let person1: Person = {};
person1.name = "name"
person1.surname = "surname"
当我声明person1时,我得到这个错误:Type '{}' is missing the following properties from type Person
4条答案
按热度按时间13z8s7eq1#
这是一个更好的方法:
但是如果你想要完全空的对象,你可以像这样破解它:
评论后更新:
看看这个
unpredictableFunction
:它可以返回数字,或者返回字符串,或者返回字符串数组
在这种情况下你会看到
Type 'string | number | string[]' is not assignable to type 'string'.
答案如下:
查看您的代码并确保仅将字符串分配给Person属性,
或更新接口以准备不同的值:
f0brbegy2#
您已经定义了一个具有两个必需属性的接口。所以当你定义一个Person接口类型的对象时,你必须像这样定义这些属性:
但是,如果您认为这些属性不是必需的,而是可选的,则可以将接口更改为:
使用
?
语法可以将属性标记为可选。下面的代码应该可以工作:dpiehjr43#
在Typescript2.0中,我们可以做得更好
let person1 ! : Person;
此“!”是非空Assert运算符
根据文件
new!post-fix表达式运算符可用于在类型检查器无法得出该事实的上下文中Assert其操作数为非空和非未定义。具体来说,操作X!生成一个x类型的值,不包括null和undefined。类似于x和x作为T的类型Assert,在发出的JavaScript代码中简单地删除了非空Assert运算符。
jdzmm42g4#
把这个加到你的 typescript 里
}|{};