如何在TypeScript中返回Template Literal Type类型值?
解决方法
方法1:改用模板字符串语法替换加号拼接
将返回语句换成模板字符串形式后,TypeScript会自动推断结果符合HelloSomething类型:
type HelloSomething = `Hello ${string}` const string = 'World' function sayHello(string: string): HelloSomething { return `Hello ${string}` }
方法2:使用类型断言
如果必须保留加号拼接写法,可通过类型断言明确告知TypeScript返回值符合目标类型:
type HelloSomething = `Hello ${string}` const string = 'World' function sayHello(string: string): HelloSomething { return ('Hello ' + string) as HelloSomething }
注意:类型断言会跳过TypeScript的类型检查,仅当你能确保返回值绝对符合
HelloSomething格式时才建议使用,避免引入类型安全隐患。
原因说明
TypeScript对'Hello ' + string这类字符串拼接的类型推断结果是宽泛的string,而HelloSomething是更具体的模板字面量子类型。使用模板字符串时,TS能识别其结构匹配模板字面量定义,自动完成类型匹配;但加号拼接无法触发这种精确推断,因此需要手动处理。
内容的提问来源于stack exchange,提问作者Ooker
相关产品推荐
相关产品推荐

