【发布时间】:2021-05-02 19:46:30
【问题描述】:
我注意到<P extends object> 泛型通常毫无意义,因为基本上javascript 中的所有内容都是一个对象。大多数文字是具有 .toString 方法的对象。字符串是具有 .length 属性等的对象。我开始更喜欢 <P> 但很好奇其他人注意到了什么。
我现在没有很好的例子,我只是想听听其他人的经验。
【问题讨论】:
-
我想不出
extends object不会是多余的情况,但我有兴趣学习其他方式。 -
实际上,
stringdoes not extendobject,尽管String确实如此。我投票结束,因为这个问题似乎是基于一个错误的前提。 -
<P extends any>也是 tsx 文件的一种解决方法,以防止被解释为 JSX 标记(尽管可以使用对象而不是任何对象进行映像)。如果没有意义,就不能真正权衡。我想如果
P extends object并且你试图将一个数字作为 P 传递它不会允许它虽然 -
对于 TSX 解决方法:
<P,>也可以在不引入约束的情况下工作 -
为了更详细,我注意到 typescript 将字符串解释为对象的情况,然后我拥有此类对象的所有这些不可靠的键 (
toString | valueOf | toNumber | ...)。还有@jcalz,感谢您的深入回答!我一直假设object和{}是相同的,但不知道Object是一个实际类型
标签: typescript typescript-generics