我有一个简单的对象,它有两个字段 name 和 age,最初它们被定义为 undefined ,后来在代码中该值将被赋值
const s={
name:undefined,
age:undefined
}
s.name="Test" //error
当我试图为我的属性分配任何值时,它给了我打字稿错误
Type '"Test"' is not assignable to type 'undefined'.
谁能解释为什么我在打字稿中遇到这个错误以及如何修复它
答案 0 :(得分:2)
您没有为 s
显式定义类型,因此编译器会尝试根据提供的值推断一个类型。
s
的推断类型为:
{
name: undefined;
age: undefined;
}
您已经像这样设置了显式类型:
type User = {
name: string | undefined;
age: number | undefined;
};
const s: User = {
name: undefined,
age: undefined
};
s.name = "Test"; //should work
答案 1 :(得分:1)
如果您查看 s
的推断类型,您会发现它是
{
name:undefined;
age:undefined;
}
TypeScript 无法推断此处可能允许使用任何其他类型,因为您没有提供该信息。
创建类型:
interface Person{
name: string | undefined;
age: number | undefined;
}
然后用这种类型声明 s
:
const s:Person = {
name: undefined;
age: undefined;
}