我在运行 npm start 时收到以下错误:
ES2015 模块语法优于自定义 TypeScript 模块和命名空间 @typescript-eslint/no-namespace
namespace InternalThings {...}
Run Code Online (Sandbox Code Playgroud)
我试图研究这个,但它非常令人困惑。
为什么会发生这种情况?如何解决?
我试图在我的 tsconfig.json 上放置一些标志,但到目前为止没有成功;
我正在尝试为给定的枚举创建保证的查找。与之类似,对于枚举的每个键,在查找中应该只存在一个值。我想通过类型系统来保证这一点,以便在枚举扩展时不会忘记更新查找。我尝试了这个:
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
这段代码来自这个答案.
我试图了解它是如何工作的,但我并没有得到它.
我认为发生的是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)
谢谢!
保罗