- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 typescript playground在打开 noImplicitAny 的情况下,我输入以下代码:
async function a () {
const b = JSON.parse('{"a":"x"}');
console.log(b)
}
如果我将鼠标悬停在第二行的“b”上,我会看到它的类型被推断为 any
。但是,没有错误。我是否误解了 noImplicitAny 应该做什么或者这是一个错误?
最佳答案
The --noImplicitAny
compiler option仅在类型推断失败 的地方产生警告,并且回退或默认为any
。例如,当函数参数不能为 contextually typed 时,您会收到隐式 any
错误。 :
const f = (arg) => arg + 1; // error!
// ------> ~~~ implicit any
如果编译器无法通过控制流推断出一个自动类型化变量(参见microsoft/TypeScript#11263),您也会得到这样的错误,例如在单独的函数作用域中引用该变量:
let w; // error!
// >~ implicit any
w = 2;
function foo() { w } // implicit any
在这些情况下,编译器会说“我不知道这里发生了什么,所以我会给它一个 any
类型”。
另一方面,如果您调用返回类型为any
的函数,您将获得any
类型的值。这可能是一个“隐式”any
,因为函数的调用者不需要写出返回类型,但这不是由于类型推断失败。相反,当您分配给它的变量被推断为 any
时,这是类型推断的成功(就像 x
是 number
const x = 1 + 2
表示推理成功)。所以在这些情况下没有隐式任何
错误。
自从 TypeScript library typings for JSON.parse()
看起来像
interface JSON {
parse(text: string, reviver?: (this: any, k: string, v: any) => any): any;
}
然后
const b = JSON.parse('{"a":"x"}');
成功推断出 b
类型的 any
并且没有编译器警告。
关于 typescript noImplicitAny 不会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72397246/
使用 typescript playground在打开 noImplicitAny 的情况下,我输入以下代码: async function a () { const b = JSON.p
在下面的代码片段中,尽管有一个隐式类型为 any 的参数,但 typescript 不会发出任何错误。 . declare function constrainedHOF any>(callback:
TypeScript 文档将 noImplicitAny 编译器标志记录为 Raise error on expressions and declarations with an implied an
即使我启用了 --noImplicitAny 标志,此代码也不会在 TypeScript playground 或 tsc 中向我显示任何错误。为什么不?如果我将 methodName 悬停在 pla
在我的根文件夹中,我有如下所示的 tsconfig.json 文件: { "compilerOptions": { /* Basic Options */ "target": "e
我有很多代码要移植到缺少类型的 Typescript。现在,我希望我的 IDE (WebStorm) 只突出显示需要输入的地方,我会慢慢修复它们。 如 tsconfig.json有一个 warning
我已将“noImplicitAny”和“noImplicitReturns”添加到我的 Typescript tsconfig.json 文件中: { "compilerOptions": {
我有密码 let z; z = 50; z = 'z'; 我的 tsconfig.json 是: { "compilerOptions": { "target": "es5", "
我想在编译器中启用 noImplicitAny 标志。我的问题是我使用 lodash/fp 并且到目前为止还没有打字。 因此编译器提示缺少 lodash/fp 的定义文件。 有没有办法只允许外部js文
我想在项目中使用带 noImplicitAny 和 strictNullChecks 的 typescript 声明一个带有错误优先回调的函数。 有没有一种方法可以声明一个interface 或typ
我通常设置我的 tsconfig.json 并将 strict 设置为 true。这意味着 noImplicitAny 也设置为 true。但是,当设置了 strict 时,typescript 似乎
简单的问题 - 每次我导入一个没有 .d.ts 文件的新 npm 库时,我都会创建一个 stub .d.ts 文件,其中包含很多这样的行,只是为了编译: function SomeFunctionIN
我正在使用 Typescript 2 和 Webpack 2 构建 Angular 2 应用程序。作为加载程序,我使用 awesome-typescript-loader。我在 tsconfig.js
Typescript 在 javascript es6 之上添加了许多功能,我对静态类型和private/public/protected 关键字很感兴趣。 到目前为止,Typescript 编译器施
我总是使用标志 --noImplicitAny 编译 TypeScript。这是有道理的,因为我希望我的类型检查尽可能严格。 我的问题是使用以下代码时出现错误: Index signature of
我总是使用标志 --noImplicitAny 编译 TypeScript。这是有道理的,因为我希望我的类型检查尽可能严格。 我的问题是使用以下代码时出现错误: Index signature of
我是一名优秀的程序员,十分优秀!