#typescript
#typescript
Вопрос:
Возможно ли это сделать в TypeScript?
Примечание: любое имя свойства допустимо в props
аргументе
type Values<T extends object> = Pick<T, Exclude<keyof T, 'onStart'>>
declare function animate<T extends {
onStart?: (values: Values<T>) => void
}>(props: T): void
animate({
foo: 100,
onStart(values) {
// $Expect(values == { foo: number })
}
})
Комментарии:
1. Какой тип предполагаемого свойства? Например, вы пытаетесь убедиться, что
values
у него есть свойствоfoo
типаnumber
?2. Да, это то, что говорится в
$Expect
комментарии3. Хм, я сомневаюсь, что это возможно. Я знаю, что видел, как говорилось , что компилятор не выводит параметр типа одновременно и не применяет выведенный параметр контекстуально. Не знаю, есть ли официальное сообщение об этом случае.
4. @jcalz Как ни странно, вы можете это сделать, но не с типами функций ( см. Здесь )
5. На самом деле, единственным ограничением являются типы аргументов. Возвращаемый тип работает нормально. ( смотрите здесь )