打字稿 - 不可分配给从不打字

时间:2021-02-01 18:44:34

标签: javascript typescript ecmascript-6

我正在尝试为我的 Vue js 组件之一动态设置状态,并在尝试这样做时收到打字稿错误:

  methods: {
    resetPage() {
      interface ResetStateItems {
        selected: WebspaceBackupArtifactExtended[];
        selectedDirectory: string;
        artifacts: WebspaceBackupArtifactExtended[];
        isLoadingDirectory: boolean;
        restoreComplete: boolean;
        isProcessingBackupRestore: boolean;
      }

      const resetStateItems: ResetStateItems = {
        selected: [],
        selectedDirectory: '/',
        artifacts: [],
        isLoadingDirectory: false,
        restoreComplete: false,
        isProcessingBackupRestore: false,
      };

      Object.keys(resetStateItems).forEach((stateItem: string) => {
        this[stateItem as keyof ResetStateItems] =
          resetStateItems[stateItem as keyof ResetStateItems];
      });
    },
  }

打字稿给我一个错误:

ERROR in /app/src/views/my-file.vue(484,9):
my-project    | 484:9 Type 'string | boolean | WebspaceBackupArtifactExtended[]' is not assignable to type 'never'.
my-project    |   Type 'string' is not assignable to type 'never'.
my-project    |     482 |
my-project    |     483 |       Object.keys(resetStateItems).forEach((stateItem: string) => {
my-project    |   > 484 |         this[stateItem as keyof ResetStateItems] =
my-project    |         |         ^
my-project    |     485 |           resetStateItems[stateItem as keyof ResetStateItems];
my-project    |     486 |       });

我不完全确定为什么它会抛出这种错误,因为当我重现它时here它似乎没有任何错误。

是否与 Vue JS 中的“this”实例有关?对于这个错误的其他类似问题没有帮助,因为我可以告诉我我正在按照我应该的方式实施它?

0 个答案:

没有答案