我想知道是否有可能创建一种类型来保证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
替代任何其他功能,但是您明白了。
我认为与“将数组标记为已排序”非常相似的功能可能是“将字符串标记为有效的网址”。
我不一定要引入新的基本类型或扩展它们,我只是想要一些保证值已通过某些先决条件的保证。我可能在这里使用了不正确的术语,但是我觉得这可能在键入的lambda演算,haskell以及通过Opaque类型的某种形式的流操作中实现。