相关疑难解决方法(0)

ES2015 模块语法优于自定义 TypeScript 模块和命名空间 @typescript-eslint/no-namespace

我在运行 npm start 时收到以下错误:

ES2015 模块语法优于自定义 TypeScript 模块和命名空间 @typescript-eslint/no-namespace

    namespace InternalThings {...}
Run Code Online (Sandbox Code Playgroud)

我试图研究这个,但它非常令人困惑。

为什么会发生这种情况?如何解决?

我试图在我的 tsconfig.json 上放置一些标志,但到目前为止没有成功;

javascript node.js typescript reactjs

27
推荐指数
3
解决办法
2万
查看次数

使用枚举作为字典键

我正在尝试为给定的枚举创建保证的查找。与之类似,对于枚举的每个键,在查找中应该只存在一个值。我想通过类型系统来保证这一点,以便在枚举扩展时不会忘记更新查找。我尝试了这个:

type EnumDictionary<T, U> = {
    [K in keyof T]: U;
};

enum Direction {
    Up,
    Down,
}

const lookup: EnumDictionary<Direction, number> = {
    [Direction.Up]: 1,
    [Direction.Down]: -1,
};
Run Code Online (Sandbox Code Playgroud)

但是我收到这个奇怪的错误:

输入'{[Direction.Up]:数字;[Direction.Down]:数字;}”不可分配给“方向”类型。

在我看来这很奇怪,因为它说的类型lookup应该是Direction而不是EnumDictionary<Direction, number>。我可以通过将lookup声明更改为以下内容来确认这一点:

const lookup: EnumDictionary<Direction, number> = Direction.Up;
Run Code Online (Sandbox Code Playgroud)

而且没有错误。

如何为枚举创建查找类型,以确保枚举的每个值都将导致其他类型的值?

TypeScript版本:3.2.1

enums dictionary typescript

6
推荐指数
2
解决办法
1328
查看次数

JavaScript枚举示例 - 这是如何工作的?

这段代码来自这个答案.

我试图了解它是如何工作的,但我并没有得到它.

我认为发生的是TEST_ERROR是一个闭包,因此无法更改ErrorValue.一个人会引用这样的值:TEST_ERROR.SUCCESS.如果其中任何一个陈述不正确,请纠正我.

我不明白的是返回声明正在做什么.它返回一个由不同的ErrorValues组成的对象,但是将它返回到什么状态?它是从什么回来的?什么时候被召唤?

var TEST_ERROR = (function() {
  function ErrorValue(value, friendly) {
    this.value = value;
    this.friendly = friendly;
  }
  ErrorValue.prototype = {
    toString: function() { return this.friendly; },
    valueOf: function() { return this.value; }
  };
  return {
    'SUCCESS': new ErrorValue(0, 'Success'),
    'FAIL': new ErrorValue(1, 'Fail'),
    'ID_ERROR': new ErrorValue(2, 'ID error')
  };
})(); 
Run Code Online (Sandbox Code Playgroud)

谢谢!

保罗

javascript enums closures

4
推荐指数
1
解决办法
1052
查看次数

标签 统计

enums ×2

javascript ×2

typescript ×2

closures ×1

dictionary ×1

node.js ×1

reactjs ×1