Каков наилучший способ проверки конфигурации для расширения vscode? - PullRequest
1 голос
/ 09 февраля 2020

У меня есть расширение vscode, которое определяет группу элементов в "configuration" точке вклада в package.json. Например:

{
    "configuration": {
        "title": "My extension config",
        "type": "object",
        "properties": {
            "my-ext.path-to-some-binary": {
                "type": ["string"],
                "default": "/default/path",
                "description": "Path to some binary, this must be a string and nothig else!"
            }
        }
    }
}

Но когда я читаю конфигурацию из своего внутреннего номера, я не гарантирую получить тип string из указанного значения конфигурации во время выполнения.

const value: unknown = vscode.workspace.getConfiguration("my-ext").get("path-to-some-binary");
if (typeof value !== "string") {
    console.error("User you are crazy!");
}

И проверка типа каждое значение конфигурации становится очень утомительным. Почему vscode не имеет API для работы с недопустимыми значениями в settings.json, если у него есть схема типов, определенная в package.json? И каков наилучший способ сопоставить значения конфигурации во время выполнения со схемой, определенной в package.json, не делая это вручную или повторяя схему в коде, используя некоторый пакет npm, такой как yup или joi?

Я знаю, что vscode-cpptools имеет некоторый собственный рукописный код для сопоставления значений конфигурации со схемой, определенной в package.json, но это кажется слишком запутанным.

...