由Typescript数组实现的接口
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由Typescript数组实现的接口相关的知识,希望对你有一定的参考价值。
在C#中,数组实现了IEnumerable
接口,所以我可以编写一个接受IEnumerable
的函数,并且调用者可以传递实现该接口的数组或其他类(例如List
)。
是否有打字稿等效项?我想编写一个函数,它接受数组或任何其他可以迭代的集合,或者生成器函数。
private thing: object[]
或者如果您正在定义接口,则语法为
public interface IClassName
propName: object[]
--downlevelIteration
compiler option可以用--downlevelIteration
,function takeIterable<T>(iterable: Iterable<T>)
console.log("for-of");
for (let t of iterable)
console.log(t);
console.log("array spread");
const arr = [...iterable];
for (let i = 0; i < arr.length; i++)
console.log(arr[i])
console.log("manually iterating")
let iterator = iterable[Symbol.iterator]();
for (let res = iterator.next(); !res.done; res = iterator.next())
console.log(res.value);
迭代到数组中,或直接使用上述迭代器协议进行迭代。
然后,在javascript ES2015 +中,数组,字符串,Iterable<T>
和for...of
loop已经实现了可迭代的协议,或者您可以创建自己的协议:
for...of
好的,希望能有所帮助;祝你好运!
spread
asyncIterable符号的信息。一个好的起点:Set
Map
,请阅读生成器函数(它们返回iterables或asyncIterables):Map
如果您正在寻找类似LINQ的体验,请查看此零依赖实用程序包:takeIterable([1, 2, 3]); // arrays
takeIterable("hey"); // strings
takeIterable(new Set(["a", "b", "c", "a"])); // sets
takeIterable(new Map([["a", 1], ["b", 2], ["c", 3]])); // maps
takeIterable(
[Symbol.iterator]()
return
next()
const done = Math.random() > 0.8;
return
done,
value: done ? undefined : Math.floor(Math.random() * 100)
); // custom iterable
// e.g., for-of 80 40 array spread 81 80 51 80 50 82 24 manually 28 45 51
以上是关于由Typescript数组实现的接口的主要内容,如果未能解决你的问题,请参考以下文章