我在用函数返回的值初始化变量时遇到了困难。函数托管在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[]
是不正确的呢?
1条答案
按热度按时间wqlqzqxt1#
错误消息告诉您使用
Float64Array
的类型:var
不应该在新代码中使用。)*也就是说,不需要显式注解,TypeScript会为您推断它:
那么为什么将变量定义为var xvalues:number[]是不正确的呢?
因为
number[]
和Float64Array
是不同的东西。确实,Float64Array
包含number
值,但它是一个与标准数组不同的容器。同样值得注意的是,记录来自Float32Array
,Int8Array
,或除BigInt64Array
以外的任何其他类型数组,即使它们包含不同种类的数字,因为当您访问类型数组中的值时,它是从原始类型转换而来的(例如,在Int8Array
的情况下,8位二进制补码数)转换为普通的number
类型。