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解析json文件中的确切类型_Json_Typescript_Types - Fatal编程技术网

TypeScript解析json文件中的确切类型

TypeScript解析json文件中的确切类型,json,typescript,types,Json,Typescript,Types,我有一个json配置文件 [{ name: "apple", weight: 1.0 }, { name: "banana", weight: 2.0 }] 我创建了描述此配置的类型 type Config={name:“apple”|“banana”,weight:number}[]; 现在,我创建了一个返回该配置的函数 从“/Configuration.json”导入配置; 函数getConfig():Config{ 返回配置; } 我这样说是错

我有一个json配置文件

[{ name: "apple", weight: 1.0 }, { name: "banana", weight: 2.0 }]
我创建了描述此配置的类型

type Config={name:“apple”|“banana”,weight:number}[];
现在,我创建了一个返回该配置的函数

从“/Configuration.json”导入配置;
函数getConfig():Config{
返回配置;
}
我这样说是错误的

类型“string”不可分配给类型“apple”|“banana”

我知道问题出在
name
字段上,该字段的类型被解析为
string
,而不是
“apple”|“banana”

是否可以使用精确的类型解析
.json
文件?因此,我可以确保
.json
文件具有正确的结构,仅使用TypeScript类型系统?

这是一个强制转换问题。 试着像这样铸造它

function getConfig(): Config {
   return Configuration as Config;
}

应该注意的是,使用类型定义无法确保JSON文件具有所需的结构。例如,您可以将
“name”:“apple”
更改为
“foo”:“bar”
,它仍然可以编译而不出错。如果您想100%确定从JSON文件导入的数据是所需的结构,那么必须使用实际代码进行检查。