{ hello: 'hi' }
const p = new URLSearchParams(y)
interface Params {
hello: string;
}
function f(a: Params) {
return new URLSearchParams(a);
}
Почему в первом вызове URLSearchParams тс считает что всё норм, а во втором ошибка?
Type 'Params' is not assignable to type 'Record<string, string>'.
Index signature is missing in type 'Params'.
Потому что Params может быть расширен чем-то, что не Record<string, string>. Отнаследуй interface Params extends Record<string, string>
понятно, спасибо А вот ещё момент. Я хочу сделать необязательный параметр (по задумке он может или отсутствовать, или быть строкой) interface Params extends Record<string, string> { hello: string; world?: string; } Я так понимаю ts не отличает отсутствующий ключ от ключ с undefined, и потому ругается Что тут можно придумать?
Почему? Отличает. На ключ с ? - keyof не отдаст название
Хм, тут хз. Мб попробовать наследоваться от Partial<Record<string, string>>, но не уверен
тогда возвращается первоначальная ошибка)
Обсуждают сегодня