TypeScript Inference for Object.isPrototypeOf()

zujrkrfu  于 6个月前  发布在  TypeScript
关注(0)|答案(1)|浏览(44)

你好,我想知道是否可以像 instanceof 运算符那样推断 isPrototypeOf() 函数的类型?这样我们就可以缩小参数的类型,如果它是使用 Object.create(proto) 函数创建的,那么它的类型将类似于 typeof proto,如果检查得到满足。

搜索词

isPrototypeOf

示例

if (object instanceof HTMLAnchorElement) {
    console.log(object.href);
}

if (HTMLAnchorElement.prototype.isPrototypeOf(object)) {
   console.log(object.href);
}

检查清单

我的建议符合以下指导原则:

  • 这不会对现有的 TypeScript/JavaScript 代码造成破坏性改变
  • 这不会改变现有 JavaScript 代码的运行时行为
  • 这可以在不根据表达式的类型发出不同的 JS 的情况下实现
  • 这不是一个运行时特性(例如库功能、带有 JavaScript 输出的非 ECMAScript 语法等)
  • 这个特性将与 TypeScript's Design Goals 的其他部分保持一致。
9wbgstp7

9wbgstp71#

你可以将自己的签名isPrototypeOf()合并,以在自己的代码库中获得这种行为,无论这是否最终被接受到TS标准库中:

interface Object {
    isPrototypeOf<T extends Object>(this: T, obj: Object): obj is T;
}

Playground链接

相关问题