在此代码中,v1类型为BehaviorSubject<string | number>,v2类型为{}。
我想要那种类型的v1 be BehaviorSubject<string>和v2 be { a: number, b: number }。
在TypeScript类型的系统中,这种情况可能发生吗?
interface Test
{
prop: {
(x: string | number): BehaviorSubject<typeof x>;
(x: {}): typeof x;
}
}
let test: Test;
let v1 = test.prop('');
let v2 = test.prop({ a: 1, b: 2 });它可能与最新的TypeScript 2.1,甚至使用键或映射类型特性。
发布于 2016-12-27 22:23:20
用泛型做这个怎么样?
interface Test
{
prop: {
<T extends string | number> (x: T): BehaviorSubject<T>;
<T> (x: T): T;
}
}发布于 2016-12-28 09:54:51
“Paarth”的解答解决了我的问题。我只需要用:
<T extends string> (x: T): BehaviorSubject<string>;
<T extends number> (x: T): BehaviorSubject<number>;因此,支柱(1)具有兼容类型(数字,而不是常量)与支柱(2)。
现在我想要这样的东西:
interface Int
{
a: MyType<number>;
b: MyType<string>;
c: MyType<{ x: number, y: number }>;
}使用相同的逻辑,其中a、b和c的类型分别为BehaviorSubject<number>, BehaviorSubject<string> and { x: number, y: number }。
这个是可能的吗?
https://stackoverflow.com/questions/41350377
复制相似问题