TypeScript原始类型接口适用场景及Map返回类型写法正误咨询
类型写法正误说明
你提供的返回类型写法存在两处错误:
- 尖括号位置错误:泛型参数需要直接绑定到
Map类型后,不需要额外在外层加尖括号,同步方法返回Map类型的标准写法为methodName(): Map<string, string> {...}。如果你的方法是异步返回Map,对应写法为methodName(): Promise<Map<string, string>> {...},外层尖括号需要绑定对应容器类型,不能单独存在。 - 泛型参数大小写错误:TypeScript 中*
string是原始字符串类型,String是JavaScript内置的字符串包装对象类型,绝大多数业务场景下都应该使用小写的string标注类型,你猜测的替换为小写的写法是正确的。
TypeScript原始类型接口适用场景
- 扩展原始类型的全局能力:如果需要给所有原始类型实例扩展自定义方法、属性时,可以通过扩展原始类型接口实现。比如给所有字符串增加移除所有空格的自定义方法,扩展
interface String后所有字符串实例都能调用该方法,注意这类操作会污染全局类型声明,非必要不建议使用。 - 实现标称类型系统:配合原始类型接口可以构造带标识的 branded type,避免业务中相同基础类型混用的问题。比如用户ID和订单ID都为数字类型,通过标称类型封装后TS会判定两种ID类型不兼容,避免传参错误。
- 标注包装对象类型:当代码中明确使用
new Number()、new String()这类原始类型包装对象实例时,需要用大写的原始类型接口标注对应实例的类型,普通字面量声明的原始值不需要使用该类型。
内容的提问来源于stack exchange,提问作者Ben Racicot
相关产品推荐
相关产品推荐

