在Typescript中,如何在接口中使用字符串文字类型?
这是一个稍微不同的问题。这是特定于在在Typescript中,如何在接口中使用字符串文字类型?,typescript,Typescript,这是一个稍微不同的问题。这是特定于在接口中使用类型的 我想在接口中使用。我相信我离这个问题的答案还有一点距离 下面是我的代码的一个简化示例,它显示了错误 我需要更改什么才能获得barFunction(baz)以避免出现以下类型的脚本错误 //foo.ts 类型名称='a'|'b' 接口条{ x:姓名 } 常数n:Name='a' 常量bar函数=(bar:bar)=>console.log(bar) barFunction({x:'a'}) const baz={x:'a'} 巴函数(baz)
接口中使用类型的
我想在接口中使用。我相信我离这个问题的答案还有一点距离
下面是我的代码的一个简化示例,它显示了错误
我需要更改什么才能获得barFunction(baz)
以避免出现以下类型的脚本错误
//foo.ts
类型名称='a'|'b'
接口条{
x:姓名
}
常数n:Name='a'
常量bar函数=(bar:bar)=>console.log(bar)
barFunction({x:'a'})
const baz={x:'a'}
巴函数(baz)//
要获得barFunction(baz)
而不具有
下面的类型脚本错误
您无法使用条形码功能
。问题不在那里。事实上,你对baz
的定义被拓宽了
为了缓解此问题,请使用显式类型定义:
const baz: Bar = { x: 'a' }
…或不太理想,但也是一个解决方案:
barFunction(baz as Bar)
使用TypeScript 3.4,我们还可以:
const baz = { x: 'a' } as const
这将使TypeScript将'a'
视为字符串文字,而不仅仅是任何字符串
谢谢。我还发现我可以通过使用barFunction(baz-as-Bar)
来解决错误。在创建const
vs在函数调用中定义时,使用您的建议强制转换类型更有意义,这样问题就可以在一个地方得到解决。
const baz = { x: 'a' } as const