当我合并名称空间和类时,typescript提醒我不要重新声明



我基于这里的文档进行编码。为什么这是一个问题?

这是打字错误吗?

class BST {
root:BST.Node
constructor (key:number, value:any) {
this.root = new BST.Node(key, value)
}
}
// error: 'BST' is already defined.
namespace BST{
export class Node {
key:number
value:any
constructor (key:number, value:any) {
this.key = key
this.value = value
}
}
}
export {
BST
}

还有一个问题。我该怎么写root类型?

class BST {
// How should I write `root` type?
root: ???;
constructor (key:number, value:any) {
this.root = new BST.Node(key, value)
}
static Node = class Node {
key:number
value:any
constructor (key:number, value:any) {
this.key = key
this.value = value
}
}
}
export {
BST
}

这个错误来自于@typescript-esLint。

我在检查github QA时发现了它。

https://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/FAQ.md i-am-using-a-rule-from-eslint-core-and-it-doesnt-work-correctly-with-typescript-code

我使用的是ESLint核心中的规则,它不能正确地与TypeScript代码一起工作。

↓https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-redeclare.md

module.exports = {
env: {
browser: true,
es2021: true
},
extends: [
'standard'
],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 12,
sourceType: 'module'
},
plugins: [
'@typescript-eslint'
],
rules: {
// answer
'no-redeclare': 'off',
'@typescript-eslint/no-redeclare': ['error']
}
}

最新更新