如何在 JS 中强制执行整数大小?(打字稿?)

DAn*_*ino 6 javascript typescript

我正在开发一个 JavaScript 项目,该项目将从能够强制执行一些非常具体的整数类型(uint8、int256、int20...)中受益匪浅。我很想使用 TypeScript,但我越探索它似乎有点用词不当。

我预计会有一些类似“不要使用 JavaScript”的回复。这是规范的 JS 实现,因此必须符合规范。我相信通过强制执行这些类型,我可以获得更健壮和可读的代码。我确实想知道是否有人可以论证为什么这不值得这些好处。

Dus*_*vic 1

对于内置类型来说这是不可能的,因此只需为每种类型创建一个包含 getter 和 setter 的类包装器。像这样:

class Uint8 {
    private _value: number;

    get value(): number {
        return this._value;
    }

    set value(newValue: number) {
        if (newValue < 0 || newValue >255 || Math.round(newValue) !== newValue) return;
        this._value = newValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • `if (newValue !== (newValue &amp; 0xFF)) return;` 更简单、更快 (2认同)