如何声明一个新的复杂变量类型

时间:2016-05-27 07:40:30

标签: typescript

我试图定义一个相当复杂的数组和一个函数来返回不同的常量。我的伪代码如下所示:

// file: matrix.d.ts (to accompany matrix.js)
declare module 'matrix' {

  // values restricted to ...
  type MATRIX_VALUE = (null|-1|0|1);
                       ^ ERROR: [ts] Type expected.
  // OR:
  type MATRIX_VALUE = Number?;
                            ^ ERROR: [ts] ';' expected.

  // array length restricted to 3 in 3, + specific values
  type Matrix = Array<Array<MATRIX_VALUE>[3]>[3];
                                          ^ ERROR: [ts] ']' expected.
  // OR:
  type Matrix = Array<Array<MATRIX_VALUE>(3)>(3);
                                         ^ ERROR: [ts] '>' expected.

  export const A;
  export const B;

  export function testMatrix(mat: Matrix): A|B;  
                                           ^ ERROR: [ts] can not find name 'A'.

}

我很丢失。似乎没有关于它的文件。 有任何想法吗?也许我完全以错误的方式使用它。我很感激任何解决这个问题的方向。

1 个答案:

答案 0 :(得分:1)

  

输入MATRIX_VALUE = Number

使用TypeScript latest支持null类型:

type MATRIX_VALUE = number | null
  

数组长度限制为3 in 3,

使用tupple类型

type MatrixRow = [number,number,number]
type Matrix = [MatrixRow,MatrixRow,MatrixRow]