TypeScript中如何无类型断言将数值赋值给数值模板字符串类型?
解决TypeScript中number转
${number}类型的无断言方案 要实现number类型变量向${number}类型变量的赋值,且不使用类型断言,有两种可靠方案:
方案一:直接使用模板字符串包裹
TypeScript会将${number类型变量}的表达式类型推断为${number},而非宽泛的string,因此可以直接完成赋值:
const x: number = 0; const y: `${number}` = `${x}`;
方案二:封装类型安全的转换函数
如果需要多次进行这类转换,可以封装一个返回类型明确为${number}的函数,内部通过模板字符串实现类型安全的转换:
function numToNumericString(n: number): `${number}` { return `${n}`; } const x: number = 0; const y: `${number}` = numToNumericString(x);
为什么x.toString()不可行?
TypeScript内置的number.prototype.toString()方法返回类型被定义为string,即使它实际返回的是数值格式的字符串,类型系统也不会自动将其细化为${number},因此直接赋值会触发类型不匹配的错误。
内容的提问来源于stack exchange,提问作者Semanual
相关产品推荐
相关产品推荐

