给出类型“测试”的打字稿不可分配给类型“未定义”

时间:2021-07-30 15:01:28

标签: reactjs typescript

我有一个简单的对象,它有两个字段 name 和 age,最初它们被定义为 undefined ,后来在代码中该值将被赋值

const s={
    name:undefined,
    age:undefined
}
s.name="Test" //error

当我试图为我的属性分配任何值时,它给了我打字稿错误

Type '"Test"' is not assignable to type 'undefined'.

谁能解释为什么我在打字稿中遇到这个错误以及如何修复它

2 个答案:

答案 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;
}

enter image description here

TypeScript 无法推断此处可能允许使用任何其他类型,因为您没有提供该信息。

创建类型:

interface Person{
    name: string | undefined;
    age: number | undefined;
}

然后用这种类型声明 s

const s:Person = {
    name: undefined;
    age: undefined;
}

Playground Link