开始用TS了,痛苦的不行

大佬,怎么写?给个格式参考下,思路的理解,语法的懵逼。

很多方式,比如

const aaarr = new Array(10).fill(0);

或者for 循环,
aaarr.push(0); 10次

private static eventList: {eventName: string; eventNum: string;}[] = [] 
var obj = { eventName: "", eventNum: "" };
this.eventList[0] = obj;

这招没管用,我试试push

你这个数组是 static 的,用的时候是在 static 方法里用的吗

对,是static的方法里

这句话啥意思?

这句话刚刚说错了 我的。
直接push 就行 ,这里报错的原因是因为你 list[0] 不存在 返回值是 undefine ,
所以你的list[0].aaa = abc 实际是 undefine.abc,报错就成了 不存在abc这个属性

用push初始化数组,解决了。谢谢各位大佬的帮助,感觉外面阳光都明媚了很多呢(没有太阳

不过在试验的过程中发现,虽然我声明的时候格式写的是{eventName; eventNum},但实际上好像这个没啥用,因为我刚试了下,如果我在初始化数组的时候,写aaa: “test”,这个数组就变成{aaa: “test”}这样的格式了,这样是不是没必要把格式声明那么清楚了?或者说,这就是我们需要自己约束自己的地方,只按声明的用别乱来?

相关代码我是这么写的,要是有人遇到和我一样的问题,可以康康参考下

public static fullDefaultEventList: {eventName: string; eventNum: string;}[] = [];

for (var i = 0; i < splittedEventsList.length; i++) {
var obj = { eventName: “”, eventNum: “” };
this.fullDefaultEventList.push(obj);
this.fullDefaultEventList[i].eventName = splittedEventsList[i];
this.fullDefaultEventList[i].eventNum = splittedEventsNumList[i];
}

不写声明就成了js了呀。你不是享受这代码提示的智能吗?不写声明就没这个智能了。你自己考虑就行。。而且,为什么用ts不用js, 不就是为了限制程序员这个人不要乱写代码吗?

是这个道理,大佬所言极是

类型是要声明清楚的 string就"" num 就 0 或者-1 声明类型的时候
最好可以使用interface或者class

interface IDefaultEvent

{

    eventName:string,

    eventNum:number,

}

class DefaultEvent{

    eventName:string;

    eventNum:number;

    /**

     * @param eventName 名称

     * @param eventNum 数量

     */

    constructor(eventName:string = "", eventNum:number = 0)

    {

        this.eventName = eventName;

        this.eventNum = eventNum;

    }

}

let a:DefaultEvent[] = [];

let b:DefaultEvent = new DefaultEvent("test",1);

a.push(b);

可以试试 这样子的代码提示比较舒适

卧槽这个有点厉害了,我要消化消化

什么时候this只能指向class实例,那才是真的,,,,

调试bug的时候,就知道到底用什么痛苦了
你大部分时间应该都用在调试上的

你如果只是想定义一个string类型的数组 可以直接声明一个 listName:string[]=[];

用过as3 再用ts 感觉差不多 :roll_eyes:

差得多。。。。as3没有this指向问题。。。。as3是最好的语言

没有用过强类型语言的脚本程序员一开始确实会不习惯,js确实随心所欲但是项目一旦到达中重度js简直是灾难很难维护,楼主静下心来慢慢就会体会到ts的类型系统带来的好处了