首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于参数类型的TypeScript结果类型

基于参数类型的TypeScript结果类型
EN

Stack Overflow用户
提问于 2016-12-27 18:32:26
回答 2查看 310关注 0票数 0

在此代码中,v1类型为BehaviorSubject<string | number>v2类型为{}

我想要那种类型的v1 be BehaviorSubject<string>v2 be { a: number, b: number }

在TypeScript类型的系统中,这种情况可能发生吗?

代码语言:javascript
运行
复制
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,甚至使用键或映射类型特性。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-27 22:23:20

用泛型做这个怎么样?

代码语言:javascript
运行
复制
interface Test
{
    prop: {
        <T extends string | number> (x: T): BehaviorSubject<T>;
        <T> (x: T): T;
    }
}
票数 2
EN

Stack Overflow用户

发布于 2016-12-28 09:54:51

“Paarth”的解答解决了我的问题。我只需要用:

代码语言:javascript
运行
复制
<T extends string> (x: T): BehaviorSubject<string>;
<T extends number> (x: T): BehaviorSubject<number>;

因此,支柱(1)具有兼容类型(数字,而不是常量)与支柱(2)。

现在我想要这样的东西:

代码语言:javascript
运行
复制
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 }

这个是可能的吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41350377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档