我正在尝试在Typescript中为矩阵编写接口,
我无法找到一种将类型Array<Array<number>>
描述为接口的方法。
const matrix:Array<Array<number>> = [
[0,0,0],
[1,1,1],
[0,1,0],
]
相反,我想要类似的东西
//dosen't work
interface Imatrix {
[index:number]:Array<number>
}
然后可以在与Imatrix一起使用的函数中使用
function draw(matrix:Imatrix){
matrix.forEach(()=>{
//some code
})
}
draw(matrix)
当我这样做时,我收到错误消息“ Imatrix”类型不存在属性“ forEach”。ts(2339)
答案 0 :(得分:0)
如果您确实要使用界面,可以这样做:
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1\helpers\packaging_tool.py", line 170, in main
do_pyvenv(path, system_site_packages)
File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1\helpers\packaging_tool.py", line 88, in do_pyvenv
venv.create(path, system_site_packages=system_site_packages)
File "C:\Anaconda3\lib\venv\__init__.py", line 363, in create
builder.create(env_dir)
File "C:\Anaconda3\lib\venv\__init__.py", line 66, in create
self.setup_python(context)
File "C:\Anaconda3\lib\venv\__init__.py", line 204, in setup_python
copier(context.executable, path)
File "C:\Anaconda3\lib\venv\__init__.py", line 192, in symlink_or_copy
shutil.copyfile(src, dst)
File "C:\Anaconda3\lib\shutil.py", line 120, in copyfile
with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Anaconda3\\lib\\venv\\scripts\\nt\\python.exe'
(也许您想知道interface Row<T> extends T[]
{
[cell: number]: T
}
interface Matrix<T> extends Row<T>[]
{
[cell: number]: Row<T>
}
与T[]
的同义词。)
但是TypeScript使用结构匹配,因此 type 和 interface 之间没有区别,它们只是同一事物的不同语法。例如,这就是为什么我们不在接口名称前使用Array<T>
前缀。我上面编写的代码与此相同:
I
如果要向type Row<T> = T[];
type Matrix<T> = Array<T[]>;
添加自己的方法,正确的OOP方法将是为其创建一个类,该类包含嵌套数组作为属性:
Matrix