【发布时间】:2021-03-28 15:48:26
【问题描述】:
我不明白以下错误:
type Prefix = 'Ms' | 'Mrs' | 'Mr'
const broken = <T extends Prefix>(prefix: T): T => {
// do something
return 'Ms';
// If I do `return 'Ms' as 'Ms'` then it works
}
const works = <T extends Prefix>(prefix: T): T => {
// do something
return p;
}
const alsoWorks = (): Prefix => {
// do something
return 'Ms';
}
broken的方法给我
类型“Ms”不可分配给类型“T”。 '"Ms"' 可分配给 'T' 类型的约束,但 'T' 可以用 约束“前缀”的不同子类型。
不知道为什么这个方法不起作用,但其他两个起作用?
【问题讨论】:
-
works确实是return prefix,不是吗?或者至少p被声明为T类型。 -
"如果我这样做
return 'Ms' as 'Ms',那么它可以工作" - it doesn't for me。你的意思是return 'Ms' as T?这可以绕过类型检查器,但仍然会被破坏。
标签: javascript node.js typescript