在TypeScript中返回符号

在TypeScript中返回符号,typescript,Typescript,以下示例包含一个函数factory,该函数返回类型为Bob的符号。然而,TypeScript似乎立即忘记了返回值的类型,并阻止我在一行之后将返回值分配给变量test const bob: unique symbol = Symbol('bob') type Bob = typeof bob const factory = (): Bob => bob const instance = factory() const test: Bob = instance // Type 'symbol

以下示例包含一个函数
factory
,该函数返回类型为
Bob
的符号。然而,TypeScript似乎立即忘记了返回值的类型,并阻止我在一行之后将返回值分配给变量
test

const bob: unique symbol = Symbol('bob')
type Bob = typeof bob

const factory = (): Bob => bob
const instance = factory()
const test: Bob = instance // Type 'symbol' is not assignable to type 'unique symbol'.
Iam意识到显式类型签名可以解决此错误:

const instance: typeof bob = factory();


有没有一种方法可以在不修改变量
实例
的情况下修复此问题,使其具有显式类型签名。

看起来仍然不可能。没有显式类型声明的函数返回值从
symbol
type中删除
unique
修饰符


唯一符号
仅通过调用
symbol()
symbol.for()
,或通过显式类型注释生成

这就是为什么
const instance=factory()产生
符号

const intance: Bob = factory();