假设我们有一个非常简单的类架构:
import {RNCamera, Camera} from 'react-native-camera'
import { View,Text,Screen,Image } from 'react-native';
import Button from 'apsl-react-native-button';
import React from 'react';
export default function Reunion ({navigation}){
const cameraRef = React.createRef();
return (
<View style={{
backgroundColor: "#fff",
flex:1,
alignItems: 'center',
justifyContent: 'center'
}}>
<View
style={{
position: 'relative',
left:0,
top:-15,
width:1080,
height:480,
backgroundColor: '#c4c4c4'
}}
>
<RNCamera
style={{ flex: 1, alignItems: 'center' }}
captureAudio={false}
ref={cameraRef}
/>
</View>
</View>
)
}
我想要实现的是将扩展Vehicle的构造函数类型存储在变量中,如下所示:
class Vehicle {}
class Car extends Vehicle {
wheels: Number
constructor(wheels: Number) {
super()
this.wheels = wheels
}
}
然后,编译器抱怨let vehicleConstructor: typeof Vehicle = Car // this do not work
无法分配给类型Car
。我能理解为什么:这是因为两个类的构造函数没有相同的签名。要创建汽车,当typeof Vehicle
不需要参数时,必须使用wheels
参数。
我在代码中真正想要的是拥有一个Vehicle构造函数数组:
Vehicle
以便我可以检查随机对象是否是数组中元素之一的实例。
我不会使用此数组来创建载具,所以我不在乎构造函数的参数。我只需要确保我有一个函数数组或类构造函数,无论参数如何,它们都返回let constructors: Array<typeof Vehicle> = [Car, Truck]
。
关于如何实现该目标的任何想法?只能在Typescript中使用吗?
答案 0 :(得分:0)
好的,我感谢 Titian Cernicova-Dragomir 的提示。
我需要做的是这样:
let vehicleConstructor: (new(...args: any) => Vehicle) = Car