考虑这段简短的代码
List {
ForEach(searchService.searchResult, id: \.self) { item in
Text(item)
.font(.custom("Avenir Next Regular", size: 12))
}
}.frame(height: CGFloat(searchService.searchResult.count * 20))
TS为什么显示type A = number;
declare function f(): A;
const a = f(); // `a` is number, not A
而不是a: number
?
答案 0 :(得分:1)
类型别名,顾名思义就是其他类型的别名。类型别名不是编译器保证保留的东西(与接口不同),它使用启发式方法来提供最佳的用户体验(在这种情况下,它可能会失败)。
A
和number
实际上不是同一类型。如果要确保number
对A
的取消同化,则需要使用branded types。
type A = number & { isA: undefined};
declare function f(): A;
const a = f(); // `a` is A, not number