1. ホーム
  2. typescript

[解決済み] プロパティ 'values' はタイプ 'ObjectConstructor' に存在しません。

2022-02-10 10:25:06

質問

以下のように、enumを配列に変換しているのですが、tsconfig.jsonに何か記入漏れがあるような気がします。

これがそのスクリプトです。

const menuItems = Object.values(MediaListFilterType).map(value => ({
    type: value,
    description: () => {
        switch (value) {
            case value === MediaListFilterType.notPitched:
                return 'Exclude already pitched';
                break;
            case value === MediaListFilterType.notDoublePitched:
                return 'Exclude double pitched';
                break;
            case value === MediaListFilterType.assignedToMe:
                return 'Assigned to me';
                break;
            case value === MediaListFilterType.notAssigned:
                return 'Unassigned';
                break;
        }
    }
}));

を実行すると、このようなエラーが発生します。 Property 'values' does not exist on type 'ObjectConstructor'.

で、tsconfigは以下の通り...。

{
  "compilerOptions": {
    "module": "es6",
    "target": "es2015",
    "sourceMap": true,
    "jsx": "react",
    "moduleResolution": "node",
    "declaration": false,
    "allowSyntheticDefaultImports": true
  }
}

私はこのことについて少し新しいので、私はtsconfigで何を変更する必要があるのかわかりません。助けてください。

解決方法は?

あなたが持っているのは "target": "es2015", しかし Object.values は、es2015の一部ではありません。es2017 の一部です。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Object/values

修正

使用方法 "target": "ESNext" その機能を持つ