我正在尝试将代码javascript更改为打字稿 在Home.tsx中,
interface IState {
mySet: ??; // what is type of Set??
myNum: number;
myStr: string;
myArr: number[];
}
class Home extends Component<IProps, IState> {
constructor(props: IProps) {
super(props)
this.state = {
mySet: new Set([]);
}
}
}
什么是集合类型?
答案 0 :(得分:1)
通过查看打字稿中的定义集,您将找到以下界面:
interface Set<T> {
add(value: T): this;
clear(): void;
delete(value: T): boolean;
forEach(callbackfn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any): void;
has(value: T): boolean;
readonly size: number;
}
<T>
意味着Set
类型将需要一个类型参数。您可以像这样在IState
对象中指定它:
interface IState {
mySet: Set<number>; // type depends on what type you want to store obviously.
myNum: number;
myStr: string;
myArr: number[];
}
如果您不关心类型(如果您使用的是打字稿,则可能应该这样做),那么您可以简单地将any
作为类型参数传递,并且该集合将像在标准javascript中一样运行