问答

ts 类型问题

作者:admin 2021-04-22 我要评论

type t = string | numberconst test = (a: t, b: t) : t = { return a + b} 我的本意是当test函数调用时,a和b的类型必须一样,即都为string或者都为number,但...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
type t = string | number

const test = (a: t, b: t) : t => {
  return a + b
}

我的本意是当test函数调用时,a和b的类型必须一样,即都为string或者都为number,但是这样写似乎不生效,应该如何实现呢

###

用重载。

image.png

###
const test = <T extends (string | number)>(a: T, b: T) => {
  return a + b;
};
###

测试地址

// const test = <T extends string | number>(x: T, y: T): T {
//   return (x as any) + (y as any);
// }
// test("a", "b"); // OK
// test(5, 3); // OK
// test(1,"2"); // error

function test<T extends string | number>(x: T, y: T): T;
function test(x: any, y: any) {
  return x + y;
}

let s = test("a", "b"); // fine
let n = test(1, 2); // fine
let n2 = test(1,"2"); // error
###
const test = <T extends (string | number)>(a: T, b: T): T => {
  return <any>a + <any>b;
};

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • ts 类型问题

    ts 类型问题

  • 服务器上的mysql中的一个表操作特别慢

    服务器上的mysql中的一个表操作特别慢

  • 关于useRef的一点疑惑

    关于useRef的一点疑惑

  • ng-zorro的nz-selected组件所有的事件

    ng-zorro的nz-selected组件所有的事件

腾讯云代理商
海外云服务器