isA<T extends JSAny?> 方法
- @Since('3.4')
判断这个 JSAny?
是否是 T 声明的 JavaScript 类型的实例。
此方法使用 null、typeof
和 instanceof
检查的组合来完成此检查。建议使用此方法代替 is
检查。
如果 T
是像 JSString 这样的基本 JS 类型,此方法会使用与该基本类型相对应的 typeof
检查,如 typeofEquals('string')
。
如果 T
不是基本 JS 类型,如 JSArray 或其上的互操作扩展类型,则此方法使用由给定类型名称或 @JS
重命名属性指定的 instanceof
检查,如 instanceOfString('Array')
。请注意,如果您使用 @JS
注释重命名库,则在此 instanceof
检查中使用该重命名,如 instanceOfString('library1.JSClass')
。
为了确定在 instanceof
检查中用作第二个操作数的 JavaScript 构造函数,此函数使用与扩展类型关联的 JavaScript 名称,该名称可以是传递给 @JS
注释的参数,或 Dart 声明名称。因此,如果您有一个没有重命名的包装 JSArray
的互操作扩展类型 JSClass
,此方法将执行 instanceOfString('JSClass')
检查,而不是 instanceOfString('Array')
检查。
存在两个例外。第一个例外是 JSTypedArray
。由于在 JavaScript 中不存在 TypedArray
属性,此方法进行一些原型检查,以确保 isA<JSTypedArray>
能够正常工作。另一个例外是 JSAny
。如果您执行 isA<JSAny>
检查,它将只执行 null 检查。
使用具有对象字面量构造函数的 T
使用此方法会导致错误,因为您可能想使用 JSObject。
使用包装基本 JS 类型的 T
使用此方法会导致错误,并建议您使用该基本 JS 类型。
实现
@Since('3.4')
external bool isA<T extends JSAny?>();