type User = {
name: string;
};
const flag: any = false;
let list1: User;
list1 = flag ? flag : 1; // hope error
为什么list1可以为1,为什么不是错误:类型'1'不能分配给类型'用户'
答案 0 :(得分:2)
您在any
的注释中使用flag
。 any
根据定义可以分配给任何类型,也可以分配给任何类型。这意味着表达式flag ? flag : 1
的结果将为any
(因为三元表达式的结果之一为any
,表达式的类型为any | 1
,它将得到减少为any
)。
通常避免使用any
。如果在编译时真的不知道类型,请使用unknown
。在这种情况下,删除注释会产生预期的错误:
type User = {
name: string;
};
const flag = false; // no annotation
let list1: User;
list1 = flag ? flag : 1; // err