我只是想更好地了解以下错误:
将类型“ 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
中不是我不理解的。这里有人可以帮助我了解发生了什么吗?谢谢。
答案 0 :(得分:0)
除非启用TypeScript strict null checks,否则可以将null
和undefined
分配给任何类型。在您的user5
测试中,id
隐含为undefined
,编译器对此感到满意。