Vue3 / Typescript 定义 Array(string) 的属性

Gee*_*ang 1 typescript vuejs3

我有一个在 JavaScript 中工作的组件属性,但在 Typescript 中遇到问题:

props: {
   keep_open: {
     type: Array,
     default: () => [],
   }
}
Run Code Online (Sandbox Code Playgroud)

这个定义在这里并没有失败,而是在代码的后面:

let keepOpen: Array<string> = [this.data.popupId];
this.keep_open.forEach((id) => {
   keepOpen.push(id);
});
Run Code Online (Sandbox Code Playgroud)

Keep_Open 中的 id 是未定义类型,不会推入 KeepOpen。

我该如何解决这个问题,无论是在后面的代码中还是在属性的定义中?

小智 5

正如 vue文档中提到的,您应该使用PropTypefrom vue,所以它应该类似于

type: Array as PropType<string[]>
Run Code Online (Sandbox Code Playgroud)

作为良好的做法,不要更改组合体中道具的值,发出一个事件并且道具的所有者应该更新它。