打字稿中的 Haskell 新类型?

Mar*_*arc 6 haskell types typescript

在 Haskell 中,我们可以声明允许我们隐藏对底层数据类型的访问的新类型。这允许我们通过不暴露底层数组之类的东西(使库的用户不可能越界)来在模块中创建更安全的 API。

打字稿中是否有类似于 newtypes 的东西?

Mar*_*arc 3

作为后续,还有另一种方法可以引入类似于新类型的东西。

您可以执行以下操作:

type Seed = number & {readonly Seed: unique symbol}

const createSeed = randomNumberBetween0And1() as Seed

const doSomethingWithSeed = (s: Seed) => {...}

doSomethingWithSeed(1) // will complain
doSomethingWithSeed(createSeed()) // Will not complain
Run Code Online (Sandbox Code Playgroud)