Как заставить функцию уважать интерфейс в машинописном тексте

Если я определяю интерфейс для такой функции

interface IMyFn {
    (a: number, b: number) : number 
}

Я знаю, что могу создать переменную/константу, которая реализует эту функцию, и a и b будут иметь правильный тип.

const fn1: IMyFn = (a, b) => {
    return a + b;
}

Но как я могу объявить, что функция должна реализовывать интерфейс?

// declare fn2: IMyFn???
function fn2 (a, b) {
    return a + b;
}

В этом случае a и b не печатаются.

Я знаю, что могу сделать это:

function fn2 (a:number, b:number) : number {
    return a + b;
}

И типы будут совпадать, если я передам fn2. Но идея ввода функции заключается в том, чтобы не повторять информацию об интерфейсе.


person Hernan Rajchert    schedule 09.03.2016    source источник


Ответы (1)


Для простой функции вы можете использовать переменную, типизированную с помощью интерфейса:

var example: IMyFn = function(a, b) {
    return a + b;
}
person Fenton    schedule 09.03.2016
comment
Да, это второй код, который я добавил. Тот, который говорит const fn1. Я хочу знать, как объявить, что функция реализует интерфейс, а не переменная типа функции. - person Hernan Rajchert; 10.03.2016