将类型转换为其他类型时出现Typescript错误

时间:2019-08-07 08:14:58

标签: javascript typescript

我只是想更好地了解以下错误:

  

将类型“ A”转换为类型“ B”可能是错误的,因为   类型足够彼此重叠。

然后,当我尝试进行一些测试时,出现了一个奇怪的错误。

这些是我的代码:

type User = {
  id: string
  username: string
  age?: number
}

const user1 = {
  id: '123',
  username: 'user',
} as User // OK

const user2 = {
  id: '123',
  username: 'user',
  age: 5
} as User // OK

const user3 = {
  id: '123',
  username: 'user',
  age: 5,
  email: '1234'
} as User // OK

const user4 = {
  id: '123',
  username: 'user',
  age: '5',
} as User // Error, the age type is different

这些测试看起来很直接。

但是当我尝试这些时:

const user5 = {
  username: 'user',
  age: 5,
} as User // OK even though the ID is not exist

// Weird part
const user6 = {
  username: 'user',
  age: 5,
  email: '123'
} as User // Error, when we add unknown field without Id field
`

基于user5,该断言是正确的。但是在user6中不是我不理解的。这里有人可以帮助我了解发生了什么吗?谢谢。

1 个答案:

答案 0 :(得分:0)

除非启用TypeScript strict null checks,否则可以将nullundefined分配给任何类型。在您的user5测试中,id隐含为undefined,编译器对此感到满意。