接口中属性的多种类型

时间:2012-10-12 14:02:42

标签: flot typescript

我一直在为flot创建一个环境定义文件,作为学习一些TypeScript的练习,但我在flot的文档中多次遇到过这个问题(在轴选项中):

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

所以我可以在我的axisOptions界面中执行此操作:

interface axisOptions {
    ticks?: any;
}

其中涵盖了所有可能的选项,但是有更好的方法将其限制为数字,数组(数字)或函数,但不是其他任何选项吗?

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

您可以通过多种方法定义

来完成您所需的一些工作
interface lodash extends lodashProto, lodashStatic {
  (value: Array): lodashCurried;
  (value: Object): lodashCurried;
  (value: string): lodashCurried;
  VERISON: string;
}