【问题标题】:Generic type that can be used with the "+" operator可与“+”运算符一起使用的通用类型
【发布时间】:2017-11-23 01:03:22
【问题描述】:

在 TypeScript 中,有什么方法可以描述可以与“+”运算符一起使用的泛型类型?比如:

function add<T extends ?>(v1: T, v2: T): T {
    return v1 + v2;
}

T 应该扩展什么,或者应该如何定义?

我希望能够拨打add()如下:

add(1, 2); // 3
add("a", "b"); // "ab"

【问题讨论】:

  • 是否要求两个参数必须具有相同的类型?或者一个是number,另一个是string

标签: typescript generics types


【解决方案1】:

试试这个:

function add<T extends (number | string)>(v1: T, v2: T): T {
    return <any>v1 + <any>v2;
}

// Valid uses:
add(1, 2);
add('a', 'b');
add<number>(1, 2);
add<string>('a', 'b');

// Errors:
add(1, 'a');
add(true, false);
add<number>('a', 'b');
add<string>(1, 2);

【讨论】:

    猜你喜欢
    • 2014-08-06
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    相关资源
    最近更新 更多