Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Typescript中,如何在接口中使用字符串文字类型?_Typescript - Fatal编程技术网

在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