为什么 Buffer 赋值会触发不安全的赋值错误?
Why is Buffer assignment triggering an unsafe assignment error?
我有一个利用 ESLint 的 TypeScript 项目。我有一个 class,它使用 Buffer 作为 class 属性。我希望能够将缓冲区设置为构造的一部分。
example.ts
export class Example {
public myBuffer: Buffer
public constructor(myBuffer: Buffer) {
this.myBuffer = myBuffer
}
}
此块产生以下 linter 错误:
5:3 error Unsafe assignment of an `any` value @typescript-eslint/no-unsafe-assignment
是什么导致 TypeScript 将此类型化参数解释为 any
?我需要以某种方式导入 Buffer
类型吗?
如图所示,我的 IDE 确实检测到“myBuffer”的类型为 Buffer
:
我的开发依赖项
"devDependencies": {
"@babel/cli": "^7.10.5",
"@babel/core": "^7.8.7",
"@babel/eslint-parser": "^7.17.0",
"@babel/node": "^7.8.7",
"@babel/plugin-proposal-class-properties": "^7.8.3",
"@babel/preset-env": "^7.8.7",
"@babel/register": "^7.8.6",
"@jest/console": "^25.1.0",
"@tsconfig/node16": "^1.0.2",
"@typescript-eslint/eslint-plugin": "^5.23.0",
"@typescript-eslint/parser": "^5.23.0",
"eslint": "^8.15.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-airbnb-typescript": "^17.0.0",
"eslint-import-resolver-alias": "^1.1.2",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-sort-exports": "^0.6.0",
"jest": "^25.1.0",
"nock": "^12.0.2",
"rimraf": "^3.0.2",
"typescript": "^4.6.4"
}
傻我!
问题是我没有将 @types/node
添加为项目依赖项。由于 Buffer
存在于 Node(而不是 TypeScript)中,因此在没有添加的情况下进行 linting 时未定义类型。
运行 yarn add --dev @types/node
(或npm install @types/node --save-dev
)就可以了。
我有一个利用 ESLint 的 TypeScript 项目。我有一个 class,它使用 Buffer 作为 class 属性。我希望能够将缓冲区设置为构造的一部分。
example.ts
export class Example {
public myBuffer: Buffer
public constructor(myBuffer: Buffer) {
this.myBuffer = myBuffer
}
}
此块产生以下 linter 错误:
5:3 error Unsafe assignment of an `any` value @typescript-eslint/no-unsafe-assignment
是什么导致 TypeScript 将此类型化参数解释为 any
?我需要以某种方式导入 Buffer
类型吗?
如图所示,我的 IDE 确实检测到“myBuffer”的类型为 Buffer
:
我的开发依赖项
"devDependencies": {
"@babel/cli": "^7.10.5",
"@babel/core": "^7.8.7",
"@babel/eslint-parser": "^7.17.0",
"@babel/node": "^7.8.7",
"@babel/plugin-proposal-class-properties": "^7.8.3",
"@babel/preset-env": "^7.8.7",
"@babel/register": "^7.8.6",
"@jest/console": "^25.1.0",
"@tsconfig/node16": "^1.0.2",
"@typescript-eslint/eslint-plugin": "^5.23.0",
"@typescript-eslint/parser": "^5.23.0",
"eslint": "^8.15.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-airbnb-typescript": "^17.0.0",
"eslint-import-resolver-alias": "^1.1.2",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-sort-exports": "^0.6.0",
"jest": "^25.1.0",
"nock": "^12.0.2",
"rimraf": "^3.0.2",
"typescript": "^4.6.4"
}
傻我!
问题是我没有将 @types/node
添加为项目依赖项。由于 Buffer
存在于 Node(而不是 TypeScript)中,因此在没有添加的情况下进行 linting 时未定义类型。
运行 yarn add --dev @types/node
(或npm install @types/node --save-dev
)就可以了。