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.parse()?_Typescript_Typescript2.0 - Fatal编程技术网

Typescript 类型检查不需要';无法使用JSON.parse()?

Typescript 类型检查不需要';无法使用JSON.parse()?,typescript,typescript2.0,Typescript,Typescript2.0,找不到正确的解释为什么类型检查不适用于JSON.parse(),有人能解释一下吗?例如: > let n: number = 1 undefined > typeof n 'number' > n = true ⨯ Unable to compile TypeScript: [eval].ts (1,1): Type 'true' is not assignable to type 'number'. (2322) > typeof JSON.parse(JSON.str

找不到正确的解释为什么类型检查不适用于JSON.parse(),有人能解释一下吗?例如:

> let n: number = 1
undefined
> typeof n
'number'
> n = true
⨯ Unable to compile TypeScript: [eval].ts (1,1): Type 'true' is not assignable to type 'number'. (2322)
> typeof JSON.parse(JSON.stringify(true))
'boolean'
> n = JSON.parse(JSON.stringify(true))
true
> typeof n
'boolean'

谢谢

因为如果看到
JSON.parse的类型定义,它将返回
any

parse(text: string, reviver?: (key: any, value: any) => any): any;

这意味着将在解析的输出上禁用类型检查。您可以了解有关

的更多信息,因为如果看到
JSON.parse
的类型定义,它将返回
any

parse(text: string, reviver?: (key: any, value: any) => any): any;

这意味着将在解析的输出上禁用类型检查。你可以了解更多关于

的信息,这正是我所想的。。。但是,为什么值的类型是
布尔值
?>typeof JSON.parse(JSON.stringify(true))“boolean”,因为这是运行时类型。TypeScript在编译时不可能知道这一点。也许正是编译时检查和运行时检查之间的这种区别使得这一点令人困惑。那么,Typescript在运行时根本不会检查类型?正确。TypeScript所做的一切都是编译时的。那很好,明白了。这就是我所想的。。。但是,为什么值的类型是
布尔值
?>typeof JSON.parse(JSON.stringify(true))“boolean”,因为这是运行时类型。TypeScript在编译时不可能知道这一点。也许正是编译时检查和运行时检查之间的这种区别使得这一点令人困惑。那么,Typescript在运行时根本不会检查类型?正确。TypeScript所做的一切都是编译时的。没关系,明白了。