[英]Why tsc compile output a file that throw exception on running but ts-node run the ts file correctly?
[英]tsc and ts-node ignoring noImplicitAny
我有一个 NodeJS 项目,其中@types/node
、 ts-node
和typescript
作为开发依赖项安装,并且在我的 tsconfig.json 文件中我设置"noImplicitAny": true
。 在我的 package.json 文件中,我有三个脚本:
"start": "npm run build && node out/index.js",
"test": "nodemon",
"build": "rimraf ./out && tsc"
rimraf 基本上删除了一个文件夹,在这种情况下,output 目录。
这是我的 nodemon 配置:
{
"watch": [
"src"
],
"ext": ".ts,.js",
"ignore": [],
"exec": "ts-node --project ./tsconfig.json ./src/index.ts"
}
现在这是我的代码:
let text = 'hi'
console.log(text)
并且node test|start|run build
全部运行成功。 当然,使用 noImplicitAny 设置,TypeScript 不应该允许我设置text
变量而不将其指定为string
吗?
抱歉,如果这似乎是一个愚蠢的问题,我对 typescript 很陌生。
谢谢!
当您同时定义和初始化一个变量时, TypeScript 会隐式地从初始化值的类型中分配类型,因此它不是隐式any
,而是隐式string
,因为'hi'
是一个string
而只是一个string
。
这两条语句与 TypeScript 相同:
let text: string = 'hi';
let text = 'hi';
事实上,一些 linter 将具有诸如no-unnecessary-type-assertion 之类的规则,这些规则会阻止您添加不会更改类型的类型断言。
一个隐式any
的例子是这样的:
const func = (test) => alert(test);
--------------^^^^ implicit any type
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.