js 有没有办法定义指定类型的空数组?

比如说我想定义一个string类型的空数组?
谢谢各位大佬!

阅读 3.3k
4 个回答

方案一:
首先需要了解的是:数组里边的元素可以任意类型,例如[1,"a",{b:1}]这种
如果非要限制数组的入参格式,可以试试以下代码

Array.prototype.pushStr=function(value){
    if(typeof (value)==="number"){alert('不能传入数字')}
    else{this.push(value)}
}

image.png

注:这种方式会污染Array的原型链,比较好的方式是新建一个StringArray,并继承array,然后再往StringArray上增加pushStr方法,以上代码仅为抛砖引玉,如unshift(从数组前边插入),还需要去自行实现的

方案二:
利用ts去实现,声明string类型数组,但它只是提示入参类型错误,并不会限制push
image.png

可以借助于ts,这么做只是编译不通过而已,编译为js看右侧还是没做限制的
image.png

image.png

es6有个Proxy的特性,也能实现。可以看作是一种拦截函数的钩子——在函数执行前执行你定义的方法A。

然后你就可以在方法A里面去判断操作了之后的数组是不是都是字符串,如果不是的话就还原一下。

js没有这功能, 需要自己写类实现.

推荐问题