Typescript 如何检查对象是否静态可编辑?

Typescript 如何检查对象是否静态可编辑?,typescript,iterable,Typescript,Iterable,我有一个函数需要一个iterable: function fn(ary) { for (let value of ary) console.log(value) } 在javascript中,我将利用: 功能可交互(obj){ //检查是否为null和未定义 if(obj==null){ 返回false; } 返回obj的类型[Symbol.iterator]=“function”; } 摘自 这将导致下一个代码: function fn(ary) { if

我有一个函数需要一个iterable:

function fn(ary) {
    for (let value of ary)
        console.log(value)
}
在javascript中,我将利用:

功能可交互(obj){
//检查是否为null和未定义
if(obj==null){
返回false;
}
返回obj的类型[Symbol.iterator]=“function”;
}
摘自

这将导致下一个代码:

function fn(ary) {
    if (!isIterable(ary)) throw 'Not iterable'

    for (let value of ary)
        console.log(value)
}
有没有一种方法可以利用TypeScript的键入功能而不是使用这个即时功能?

有一种类型可以做到这一点:

function fn(ary: Iterable<any>) {
    for (let value of ary)
        console.log(value)
}
函数fn(ari:Iterable)


请注意,
Iterable
需要类型参数。
any
允许您专门检测对象是否是Iterable,尽管您可以进一步指定要迭代的内容(例如
Iterable
).

这个问题可能与您链接的问题相同-您应该将答案张贴在那里。@jhpratt-事实并非如此,所提及的问题是关于Javascript中的动态检查,而我的问题是关于TypeScript中的静态检查。实际上,我写这篇文章是因为我没有看到TypeScript版本,文档是no直截了当。我的目的是让一些谷歌搜索者快速找到这个问题的打字脚本解决方案。如果你感到困惑,我会邀请你编辑。我还不知道如何进一步澄清我的问题。