2014-08-10 2 views
0

Я пытаюсь написать файл описание машинописи для этого библиотека JavaScript: https://github.com/CRogers/punмульти типизированных остальные определений типа параметра

Проблемы в настоящее время находится с функцией pun.match, которая чередуется любой другой аргумент как ADT объект или как анонимная функция. Я хотел бы описать это в определении машинописи, как-то вдоль линий:

export function match<K extends ADT, V>([syntax here for ...: K,() => V]): V; 

Я подозреваю, что это не представляется возможным. Если это не так, есть ли способ обхода, который я могу сделать?

Спасибо.

ответ

1

Я подозреваю, что это действительно невозможно. Если это не так, есть ли способ обхода, который я могу сделать?

Невозможно. Обход использование any[]:

export function match(...args:any[]): any; 

В качестве альтернативы вы можете определить его в течение первых нескольких (п) случаях:

declare function match<K extends ADT, V>(k: K, v:() => V, k2?: K, v2?:() => V, k3?: K, v3?:() => V): V; 
+0

Я имел в виду обходной путь, который все еще обеспечивает безопасность типов. Но я полагаю, что это слишком много, чтобы надеяться. Благодарю. – Peter

+0

@Peter добавил еще один обходной путь с немного большей безопасностью. Но есть компромисс – basarat

Смежные вопросы