字面量如0可以正确推断,但唯一符号不能。
TypeScript版本: 3.7.x-dev.20191224
搜索词:
代码
let revision: symbol;
const rev = revision = Symbol();
rev === revision;
预期行为:
Type rev是唯一符号。
实际行为:
Type rev是符号。甚至无法声明rev是一个唯一符号。
** playground链接:**https://www.typescriptlang.org/play/index.html?ts=3.8.0-dev.20191224&ssl=1&ssc=1&pln=3&pc=18#code/DYUwLgBATiBuCWBneB7AdgLgogngWwCMVgBuAKAGN1FIZYIBeaOJVNRiAZXyOAAoAlOTqMGTOq3QkgA
相关问题:
4条答案
按热度按时间vlf7wbxs1#
为了确保我理解正确。你是说这个按照你的预期工作:
但是这个没有:
同样,这个按照你的预期工作:
但是这个没有:
Playground链接
对吗?
bvjxkvbb2#
const alsoNarrowSymbol = narrowSymbol;
// const alsoNarrowSymbol: symbol 😕
这不是我的意图,但可能是合法的。
daolsyd03#
可能有些相关。
unique symbol
具有一些奇怪的扩宽规则#32242
即使是恒等函数也不安全。(
<T>(t:T)=>T
)sh7euo9m4#
Just hit a similar widening issue to this one and the one described by @AnyhowStep on #32242 (now closed). A
unique symbol
(typeof foo
) becomes justsymbol
when returned from a generic function of the following signature:String literal types are not widened by this construct, but
unique symbol
is. 😕