Доброго дня.
Есть тип, описывающий небольшой объект. По замыслу это должна быть константа.
declare type KDFEncryptOptions = {
kdf: 'scrypt',
n: 8192,
};
Однако, когда я тайпаю этим типом аргумент функции, я вижу сообщение "Type `string` is not assignable to type `scrypt`". Нашел решение, которое предполагает кастование типа при присваивании.
somefunction(encryptOptions as KDFEncryptOptions);
Но оно не подходит ввиду одной фундаментальной причины: в проекте ts используется только для design-time, только с описанием типов в декларационных файлах. Маразм? Да. Но как-то быть надо.
Как быть? Есть ли способы объявить строгий тип со строковым литератом, и при этом позволить строки (при условии, что они совпадут с литералом)? Или, может быть, можно настроить компилятор, чтобы он более лояльно относился к таким кейсам?
Заранее спасибо.