乐趣区

关于typescript:初学者怎么科学地过渡到typescript

初学者怎么迷信地过渡到 typescript

前言

先介绍一下我本人的状况啊,大学毕业后花了半年左右工夫自学前端,大学在培训机构深造过(可能过后人傻钱多吧,捂脸),而后就转战魔都,而后呢爱上了这个城市,也始终奋斗在这片土地。而后当初从事前端差不多 8,9 年工夫了,所以也有一些工夫积淀下来逼迫本人写一些文章,如果能对学弟学妹有一丝丝作用,那就达成目标了,哈哈啊。当然如果有大神感觉不太正当,感觉格局太小,有局限性等,都是失常的,期待大家的声音,基于就事论事的基调我是齐全能够承受的。

学习前请先问本人几个问题

  1. typescript 是什么?
  2. typescript 要解决什么样的问题?
  3. 如果我不应用 typescript 将对我造成什么影响?

为什么学姐我要把这三点列出来,因为世界上好的货色很多,如果学习一个货色的同时能给你带来肯定的价值(这个价值前面我会说说我的了解),咱们依据某件事情所具备的价值把本人想学习的货色进行排序,就能够把本人的工夫用在刀刃上,有了播种你就会越来越激励着本人往上奋斗。好的此处学弟学妹们就当作一碗鸡汤吧。接下来咱们就好好的来唠唠嗑,我要开始了哦。

什么是价值

这里我谈一下我的了解,对于社畜的我来说,就是赚钱,而后早点退休,早点财务自在,没错就是这么直白,所以 能让本人的工夫换取更多本人目前最须要的资源我感觉就是价值,而不是靠耗费本人的衰弱。上面咱们来谈谈学习 typescript 的办法

学习 typescript 的办法

如果你曾经弄明确后面的 1,2,3 点了,那么当初咱们的焦点就汇集到具体怎么学习 typescript 这个问题上了,上面我分享一下我本人的方法论。这里有一个前提就是曾经写过一段时间的 js 哈。

  1. 去 typescript 的官网把 api 写撸一遍,肯定是官网千万不要拿来主义轻易看一下百度上的文章,因为言论自由,不要浪费时间去筛选正确的内容,认准官网就好了。学习的过程只有本人提出问题解决问题能力锤炼本人,能力印象就粗浅,有本人的见解;
  2. 根底语法差不多了那就把本人之前写过的 js,全副换成 ts 语言全副写一部,因为实际才是测验整顿的唯一标准,只有能解决理论问题的计划,才值得在我的项目里引入;
  3. 如果是应用像 webpack,rollup 等这样的前端工程化我的项目,那么请你肯定不要应用什么都健全的脚手架,而是在旧我的项目中本人去扩大和配置 typescript 这个性能,能够保障这个过程你会有很多问题,所以请解决掉他们,而后当前干掉他们就是分分钟;
  4. 比照差别点,能够达成同样成果的 api,他们之前又有什么差别呢?如果不明确差别,那么很可能会呈现不合理或者不那么正确的应用。

成绩测验

明天看到了单向链表,所以就用 ts 转换了一下,所以如果你感觉就这太简略了,分分钟能够搞定,那么你真的太优良了,哈哈哈哈哈哈哈哈。

/**
 * @author lemonbigig
 * @description 用 ts 定义一个单项链表,目标应用来学习 ts,而不是算法哈
 */

/**
 * @description 来来先上一个 node 节点 这里用了 ts 的接口 interface
 * @param data 数据
 * @param next 指向下一个节点的指针
 * @param T 利用泛型参数
 */

interface INODE<T> {
    data: T;
    next: INODE<T>

}

/**
 * @description 定义链表的构造 这里用了 ts 的泛型类
 * @param length 链表长度
 */
class TLINKLIST<T> {
    length: number = 0;
    // '|' 是类型或运算符
    head: INODE<T> | null = null;
    push(pnode: INODE<T>): void {
        let node: INODE<T> = pnode;
        if (this.head === null) {this.head = node;} else {
            var current = this.head;
            while (current.next !== null) {current = current.next;}
            current.next = node;
        }
        this.length++;
    }
    /**
     * @description 依据索引获取对应节点的值
     */
    get(pos: number): T | null {if (pos < 0 || pos >= this.length) return null
        let index = 0;
        let current = this.head;
        while (index++ < pos) {current = current.next;}
        return <T>current.data;
    }
}

/**
 * @description test case
 */
const linklist = new TLINKLIST<string>();
linklist.push({data: '111', next: null});
linklist.push({data: '2222', next: null});
linklist.push({data: '3333', next: null});
linklist.push({data: '4444', next: null});
const pos = linklist.get(3);
const pos1 = linklist.get(6);

console.log('---linklist----:', linklist);
console.log('---pos----:', pos, '----pos1-----:', pos1);

写给有缘的学弟学妹

对于那些想从事计算机行业的学弟学妹们,不论你们是前端还是后端还是 ai 人工智能还是 vr 等,毕业后的第一份工作就相当于人的出世一样,能进大的公司就进大公司,最好是行业的 top3,因为这会给你们在当前的求职路上施展不凡的“品牌效应”价值。所以能够在大三的时候反正越早越好,去那一些靠谱的,正规的求职 app 下来看一下本人心仪的公司和职位当初的要求,而后提前准备。切记不要乱报班。

退出移动版