关于 typescript 里的泛型(Generics),不太理解为什么要这么繁琐?
資深大佬 : find456789 1
比如这一段代码:
function identity<T>(arg: T): T { return arg; }
为什么不写成这样呢?删掉 <T> 不是看上去更简单吗
function identity(arg: T): T { return arg; }
大佬有話說 (16)
比如这一段代码:
function identity<T>(arg: T): T { return arg; }
为什么不写成这样呢?删掉 <T> 不是看上去更简单吗
function identity(arg: T): T { return arg; }
我觉得 Python 的泛型声明才是最恶心的
identity I=new identity();
I.A<int>(1);
“`
你看如果没有`<T>`这个类型参数的话,编译器无法在编译期间就检查类型错误,会导致不必要的类型转换和可能的类型错误,而 typescript 是微软的面向对象编程语言,在设计上会有同样的形式,所以你这里的这个`<T>`不能够省略的
哦 谢谢,似乎有一些明白了
冒昧再请教一下
问题 1: 如果我不加<T>, 编译器 有可能以为 T 是一个自定义的 interface 或者 type 对吗?
问题 2: 如果我加了 <T>, 就是 先告诉编译器,接下来的 T 是个泛型,而不是自定义 interfa 、type, 对吗
如果不结合运用泛型的上下文来声明,糟糕的例子就是 python3 的泛型了。简直就只多此一举。代码量一多,泛型声明就被淹没 了。具体类型和泛型用起来一毛一样。如下代码,你完全不知道有没有用到泛型,如果提前声明 T 是类型 str,那么扔一个 int 其实会报类型不正确的。
def Add(a:T,b:T)->T