打字稿编译器中的对象 shorthand 语法
object shorthand syntax in typescript compiler
interface o {
name: string
}
const func = (obj: o): boolean => true
// this should throw error message.(or warning message at least, but it doesn't)
func({ name })
name
在我写的代码中没有定义,所以 func({ name })
我认为应该抛出一个错误。这是故意的吗?
我可以用 eslint 或 tsc config 解决这个问题吗?
编辑:这不是重复的
我在 node 并且 Global.name 未定义。
似乎 tsc
认为 name
是字符串。
我的tsconfig.json:
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"skipLibCheck" : true,
"rootDir": "./src",
"outDir": "./src/js"
}
}
TypeScript 在 lib.dom.d.ts
中声明了一个名为 name
的全局变量,因为 window.name
.
name
声明为 never
类型,但这并不妨碍它成为一个问题。在 Github 上有一个关于将其类型更改为 void
的讨论,在这种情况下,您的示例中会出现错误。解决方法是使用 no-restricted-globals
.
规则配置 ESLint
但是,由于您是为 Node.js 编译的,因此实际上有更好的解决方案。因为您不需要 DOM API 的任何类型定义,所以最好根本不包含 lib.dom.d.ts
。
您可以通过在 tsconfig.json
中明确指定 lib
compiler option 来做到这一点:
{
"compilerOptions": {
"lib": [
"ES5"
]
}
}
Note: the exact value for lib
you'll need depends on your project. See the compiler options documentation for all available values and the defaults for different targets
interface o {
name: string
}
const func = (obj: o): boolean => true
// this should throw error message.(or warning message at least, but it doesn't)
func({ name })
name
在我写的代码中没有定义,所以 func({ name })
我认为应该抛出一个错误。这是故意的吗?
我可以用 eslint 或 tsc config 解决这个问题吗?
编辑:这不是重复的
我在 node 并且 Global.name 未定义。
似乎 tsc
认为 name
是字符串。
我的tsconfig.json:
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"skipLibCheck" : true,
"rootDir": "./src",
"outDir": "./src/js"
}
}
TypeScript 在 lib.dom.d.ts
中声明了一个名为 name
的全局变量,因为 window.name
.
name
声明为 never
类型,但这并不妨碍它成为一个问题。在 Github 上有一个关于将其类型更改为 void
的讨论,在这种情况下,您的示例中会出现错误。解决方法是使用 no-restricted-globals
.
但是,由于您是为 Node.js 编译的,因此实际上有更好的解决方案。因为您不需要 DOM API 的任何类型定义,所以最好根本不包含 lib.dom.d.ts
。
您可以通过在 tsconfig.json
中明确指定 lib
compiler option 来做到这一点:
{
"compilerOptions": {
"lib": [
"ES5"
]
}
}
Note: the exact value for
lib
you'll need depends on your project. See the compiler options documentation for all available values and the defaults for different targets