Typescript 这种构造“[System.iterator]():iterator;”的名称是什么界面内部

Typescript 这种构造“[System.iterator]():iterator;”的名称是什么界面内部,typescript,Typescript,本文显示了以下TS定义: interface Iterable { [Symbol.iterator]() : Iterator; } 我好像找不到那样的东西。可转位类型似乎不适合。那么这个结构是什么呢 我的问题不是关于迭代器,而是关于这个特殊的结构[Symbol.iterator]():迭代器,如一般形式[type]():type这些被称为迭代器,实际上它是符号。迭代器,而不是系统。迭代器。该结构意味着实现类必须是iterable(即可以使用for..of),并且iterabl

本文显示了以下TS定义:

 interface Iterable {
     [Symbol.iterator]() : Iterator;
 }
我好像找不到那样的东西。可转位类型似乎不适合。那么这个结构是什么呢


我的问题不是关于迭代器,而是关于这个特殊的结构
[Symbol.iterator]():迭代器,如一般形式
[type]():type

这些被称为迭代器,实际上它是
符号。迭代器
,而不是
系统。迭代器
。该结构意味着实现类必须是iterable(即可以使用
for..of
),并且iterable必须公开一个强制性的
next
方法:

interface IterableTest {
    [Symbol.iterator](): Iterator<string>;
}

class MyClass implements IterableTest {
    private count: number = 0;
    public [Symbol.iterator](): Iterator<string> {
        return this;
    }
    public next(): IteratorResult<string> {
        this.count = this.count + 1;
        if (this.count > 5) {
            return {
                done: true,
                value: `Value ${this.count}`
            };
        }
        else {
            return {
                done: false,
                value: `Value ${this.count}`
            };
        }
    }
}

var test = new MyClass();

declare var console: any;
for (let x of test) {
    console.log(x);
}
符号上的TS文档:

下面的文章深入解释了迭代器:


MDN关于迭代器的文章:

谢谢,但我的问题不是关于迭代器,而是关于这个特殊的结构
[Symbol.iterator]():迭代器
,如一般形式
[type]():type
这只是定义成员的另一种方式。您可以执行
接口测试{[“SomeMethod”]():string;}
。与JS中的
obj.prop
obj[“prop”]
类似。还要注意的是,Symbol.iterator只是一个字符串,而不是一些复杂的类型-实际上是
typeof Symbol。iterator
生成
Symbol
更新了答案<代码>符号
类似于字符串,可以用作对象键。
interface Test { 
    ["SomeMethod"](): string; 
}    

class TestClass implements Test {
    ["SomeMethod"]() {
        return "hello";
    }
}