У меня есть расширение 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
, но это кажется слишком запутанным.