如何指定返回唯一类的函数的类型?

时间:2019-10-07 21:16:01

标签: typescript

我有一个函数,每次工厂都返回一个新类:

function foo() {
    const s = Symbol();
    return class {
        protected readonly s: typeof s = s;
    };
}

const c1 = foo();
const c2 = foo();

const cc: typeof c1 = c2; // Error expected

const i1 = new c1();
const i2 = new c2();

const ii: typeof i1 = i2; // Error expected

playground

但是我可以将一个调用的类或实例分配给另一个调用而不会出错。

FAQ#When and why are classes nominal?说,具有受保护成员或私有成员的类成为 nominal ,因为它们是不可互换的(这与它所说的不完全一样,但这就是我的想法) )。

是否可以键入foo,以便TypeScript可以检测到typeof i1无法分配给typeof i2

0 个答案:

没有答案