Несколько типов для свойства в интерфейсе

голоса
2

Я работал над созданием окружающей среды файла определений для Flot как упражнение в процессе обучения некоторые машинописи, но я столкнулся с этой проблемой несколько раз в документации Flot (в опциях оси):

ticks: null or number or ticks array or (fn: axis -> ticks array) 

Так что я мог бы сделать это в моем интерфейсе axisOptions:

interface axisOptions {
    ticks?: any;
}

Которая охватывает все возможные варианты, но есть лучший способ, чтобы ограничить его в число, массив (числа) или функцию, но не что-нибудь еще?

Задан 12/10/2012 в 15:02
источник пользователем
На других языках...                            


2 ответов

голоса
3

Вы не можете себе задать несколько типов - на самом деле это идеальное использование динамического anyтипа , потому что , хотя это не «ничего» это, безусловно , динамичное.

Для того, чтобы обеспечить соблюдение типов на динамический тип, вы должны проверить его - как в этом примере:

function example (input?: any) {
    alert(typeof input);
    if (typeof input !== 'undefined' && typeof input !== 'string' && typeof input !== 'number') {
        alert('no');
        return;
    }

    alert('yes');
}

example(true);
example('Okay');
example();
Ответил 12/10/2012 в 15:10
источник пользователем

голоса
0

Вы можете выполнить некоторые из того, что вы после, имея несколько определений методов

interface lodash extends lodashProto, lodashStatic {
  (value: Array): lodashCurried;
  (value: Object): lodashCurried;
  (value: string): lodashCurried;
  VERISON: string;
}
Ответил 15/10/2012 в 14:01
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more