ts 泛型应该如何应用?

ts新手,想问下这类泛型的函数一般应用在哪些场景?
如果函数内将any类型值赋值给传入参数,意味着约定被破坏了,泛型就没有意义了,正确应该怎么去运用呢?

function generic<T>(arg: T): T {
  var broken: any = 1;
  arg = broken;
  return arg;
}
var returnString: string = generic<string>("2021");
console.log(typeof returnString); // number
阅读 1.8k
2 个回答

所以不要用any啊,既然要强约束就不要随意使用any,最好是禁用,虽然有时这能带来方便,作为一个函数就更不要用any了,你要约束外部的类型就不应该用any,泛型的场景举个例子比如你接受的参数类型是比较多的,宽泛的,那么你可以用泛型来作用将类型限制在一定范围内,我们以原生的数组API为例,如Array.prototype.filter这个方法,会对元素过滤并返回过滤后的数组,使用泛型就可以帮助你自动推断出元素的类型,以及返回的数组类型跟原数组一致。泛型就好比函数的参数,提供了一种在类型系统中传类型的方式


已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。

(ps:跟类型无关,个人观点-从代码角度来说更改参数这种操作最好不要有,如果参数是个引用类型很容易引起bug,函数最好不要有副作用)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进