TypeScript中“井型”是什么?

时间:2018-06-10 14:17:58

标签: json typescript

在下面的站点中,TypeScript 2.9支持定义良好的JSON。

https://blogs.msdn.microsoft.com/typescript/2018/05/31/announcing-typescript-2-9/#json-imports

“良好类型”JSON的含义是什么?据我所知,JSON有6种有效的数据类型:字符串,数字,对象,数组,布尔值和空值。因此,我认为每个JSON数据类型都是类型很好或与TypeScript基本类型匹配良好。这就是为什么我无法弄清楚“井型”的确切含义。

与此相反,什么是“not-well-typed”json?

1 个答案:

答案 0 :(得分:2)

嗯,这个例子解释了它:

// ./src/settings.json
{
    "dry": false,
    "debug": false
}

// ./src/foo.ts
import settings from "./settings.json";

settings.debug === true;  // Okay
settings.dry === 2;       // Error! Can't compare a `boolean` and `number`

由于任何JSON属性都可以是任何JSON类型,您可能认为比较settings.dry === 2不会导致任何编译错误。它只会在运行时失败。

但实际上它会发出一个编译时错误,因为TypeScript会从JSON中推断出类型,因此会阻止你做一些愚蠢的事情,比如将一个布尔变量与一个数字进行比较:这样做不会感。

就像你在TypeScript中一样:

const settings = {
    dry: false,
    debug: false
}

if (settings.dry === 2) { ... }