是否可以保证数组在Typescript中排序

时间:2019-02-26 18:16:11

标签: typescript typing

我想知道是否有可能创建一种类型来保证Typescript中数组的排序顺序。

我认为Flowtype可以通过'Opaque'类型执行类似的操作,但是我不确定是否有很好的Typescript等效项。

这通常是我要找的东西

function foo(input: SortedArray<string>) {

  // Only accepts arrays that are sorted

}

const data = ['d', 'b', 'a'];
foo(data); // fails
sort(data);
foo(data); // doesn't fail
data.push('c');
foo(data); // fails again

我不是在寻找这个确切的代码片段,并且我也不希望Typescript'知道'该数组是否在运行时排序。我要做的就是让打字稿保证:

    在该数组上调用了
  • sort()。
  • 该数组在排序后未发生突变。

sort替代任何其他功能,但是您明白了。

我认为与“将数组标记为已排序”非常相似的功能可能是“将字符串标记为有效的网址”。

我不一定要引入新的基本类型或扩展它们,我只是想要一些保证值已通过某些先决条件的保证。我可能在这里使用了不正确的术语,但是我觉得这可能在键入的lambda演算,haskell以及通过Opaque类型的某种形式的流操作中实现。

0 个答案:

没有答案