createStaticInteropMock<T extends Object, U extends Object> 函数

T createStaticInteropMock<T extends Object, U extends Object>(
  1. U dartMock, [
  2. Object? proto = null
])

给定一个 @staticInterop 类型 T 和一个 Dart 类 U 的实例 dartMock,该实例实现了 T 的外部扩展成员,创建一个转发模拟。

可选地,你可以通过 proto 提供一个 JS 原型对象,例如 JS 值 Window.prototype。这允许使用 @Native 类型进行 instanceof 和 is 检查,以通过返回的转发模拟通过。

当外部扩展成员被调用时,它们将转发到 dartMock 中的相应实现成员。如果 U 没有实现 T 所需的外部扩展成员,或者如果 U 没有正确地重写它们,将被视为编译时错误。

例如

@JS()
@staticInterop
class JSClass {}

extension JSClassExtension on JSClass {
  external String stringify(int param);
}

@JSExport()
class DartClass {
  String stringify(num param) => param.toString();
}

...

JSClass mock = createStaticInteropMock<JSClass, DartClass>(DartClass());

实现

external T createStaticInteropMock<T extends Object, U extends Object>(
    U dartMock,
    [Object? proto = null]);