javascript 如何在Typescript中正确初始化数字向量

gzszwxb4  于 2023-03-21  发布在  Java
关注(0)|答案(1)|浏览(149)

我在用函数返回的值初始化变量时遇到了困难。函数托管在here上,它应该返回一个数字数组。所以我尝试将变量定义为

import {default as linspace} from '@stdlib/array-linspace'

var xvalues:number[] = linspace(0,10, 10)

IDE显示错误,因为Type 'Float64Array' is missing the following properties from type 'number[]': pop, push, concat, shift, and 5 more.ts(2740)
因此,我使用以下日志检查了函数实际返回的内容:

console.log(typeof linspace(0,10,10) )
console.log(typeof linspace(0,10,10)[0] )

类型实际上是

Object
number

那么为什么将变量定义为var xvalues:number[]是不正确的呢?

wqlqzqxt

wqlqzqxt1#

错误消息告诉您使用Float64Array的类型:

let xvalues: Float64Array = linspace(0,10, 10)
  • var不应该在新代码中使用。)*

也就是说,不需要显式注解,TypeScript会为您推断它:

let xvalues = linspace(0,10, 10)

那么为什么将变量定义为var xvalues:number[]是不正确的呢?
因为number[]Float64Array是不同的东西。确实,Float64Array包含number值,但它是一个与标准数组不同的容器。同样值得注意的是,记录来自Float32ArrayInt8Array,或除BigInt64Array以外的任何其他类型数组,即使它们包含不同种类的数字,因为当您访问类型数组中的值时,它是从原始类型转换而来的(例如,在Int8Array的情况下,8位二进制补码数)转换为普通的number类型。

相关问题