由Typescript数组实现的接口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由Typescript数组实现的接口相关的知识,希望对你有一定的参考价值。

在C#中,数组实现了IEnumerable接口,所以我可以编写一个接受IEnumerable的函数,并且调用者可以传递实现该接口的数组或其他类(例如List)。

是否有打字稿等效项?我想编写一个函数,它接受数组或任何其他可以迭代的集合,或者生成器函数。

答案
private thing: object[]

或者如果您正在定义接口,则语法为

public interface IClassName 
  propName: object[]

另一答案
iterator protocol

--downlevelIteration compiler option可以用--downlevelIterationfunction 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
另一答案
iterable和

asyncIterable符号的信息。一个好的起点:Set

如果您正在寻找C#的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数组实现的接口的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript,接口(Interfaces),对象、数组和函数的类型

如何在1分钟内学会“TypeScript”

进阶学习13:TypeScript——安装使用特性详解

第1087期TypeScript体系调研报告

在分配之前使用变量'test' - Typescript

TypeScript(15): 接口