前端typescript实战-《TypeScript开发实践》总结

2023-08-27 0 3,984 百度已收录

《TypeScript开发实战》是极客时光的一门课程,由搜狗营销事业部中级架构师梁晓老师出品,共47章,涵盖了TypeScript的所有用法以及我们如何在实战中应用TS。 本课程还额外涵盖了一些后端基础内容,例如webpack配置、react编程范式,特别适合初学者。

以下是老师整理的TypeScript实际内容:

这里是项目相关代码的github链接,

由于我对TS有一点了解,所以我以1.5的倍数观看了整个过程。 下面我将课程的全部内容整理一下,

基本的

一般编程语言根据类型分为强类型和弱类型、动态类型和静态类型。 JS 是一种弱类型动态语言。 在类型转换的过程中,它隐式帮你做了很多操作,降低了开发难度。前端typescript实战,同时也带来了一些隐患。 类型转换是在不需要类型转换的情况下进行的,或者某些动态类型转换导致代码运行异常,只有运行时才知道。 TS 是一种强类型静态语言,具有强大的类型系统。 除了在开发阶段推断类型之外,还给开发带来了便利。 同时,它为每个变量函数声明了类型,这有助于代码维护和构建。 正如讲师所说,TS的ROI(投资回报率)是钩形的。 不允许开展大型、短期项目。 需要多人合作的项目越多,生命周期越长,回报率就越高。

如何搭建TS环境,请自行百度。 或者通过网站运行 TS,

let hello: string = 'Hello TypeScript';
document.querySelectorAll('.app')[0].innerHTML = hello;

前端typescript实战-《TypeScript开发实践》总结

ES6 中的基本类型,Boolean、Number、String、Array、Function、Object、Symbol、undefined、null。

TS数据类型包含了ES6中的所有类型,还增加了一些新的类型,void、any、never、tuple、枚举、中间类型。

通过关键字enum来实现

enum Role {
    teacher: 1,
    children: 2,
    other: 3
}
const childrenType: Role = Role[children];

interface List {
    id: number,
    name: string
}
interface Result {
    data: List[]
}
let result: Result = {
    data: [
        { id: 1, name: 'A' },
        { id: 2, name: 'B' }
    ]
};

其实socket还可以实现约束功能

interface Add {
    (x: number, y: number): number
}
let add: Add = (x, y) => x + y;

前端typescript实战-《TypeScript开发实践》总结

其实也可以使用类型约束,使用关键字type

type Add = (x: number, y: number) => number
let add: Add = (x, y) => x + y;

ts中添加类型注释

class Dog {
    constructor(name: string) {
        this.name = name
    }
    static food: string = 'bones';
    public run() {}
    protected ;
    private say = 'wangwang';
    readonly dog = 'dog';
}
class Husky extends Dog {
    constructor(name: string, color: string) {
        super(props);
        this.color = color
    }
    color: string
}

具体类,使用关键字abstract,只能被继承,不能被实例化。 表征类可以实现多态性。

abstract class Animal {
    eat() {
        console.log('eat');
    }
    // 抽象方法可以不在父类中实现
    abstract sleep(): void
}
const animal = new Animal(); // error
class Dog extends Animal{
    constructor(name: string) {
        super();
        this.name = name;
    }
    run() {}
    sleep() {
        console.log('dog sleep');
    }
}
const dog: Dog = new Dog('small dog');
dog.eat() // eat;
dog.sleep(); // dog sleep

type和socket的关系,借用课程的一张图,入侵和删除。

前端typescript实战-《TypeScript开发实践》总结

套接字可以互相继承,类也可以互相继承,实现复用。 套接字可以由类来实现,并且套接字只能约束该类的公共成员。

简单来说,也是动态传入类型,实现类型的灵活性。 也可以理解为数据类型是没有预先确定的,具体类型只有在使用的时候才会确定。

function add(x: T, y: T): T {
    return x + y;
}
add(1, 2);

为了语言灵活性,引入了中间类型

十字型

crossover类型需要实现所有socket方法

interface DogInterface {
    run() {}
}
interface CatInterface {
    jump() {}
}
class Dog implements DogInterface & CatInterface {
    run() {}
    jump() {}
}

联合型

使代码具有非确定性,提高代码的灵活性。

let a: number | string = 'a';
a = 1;
let b: 'a' | 'b' | 'c';
let c: 1 | 2 | 3;

索引类型、映射类型、条件类型使用场景相对较少,使用时即可查询。

工程文章和实用文章

新建一个ts项目

yarn install -g tsc
tsc 'project'

前端typescript实战-《TypeScript开发实践》总结

这样才能创建一个新的TS项目,同时生成一个tsconfig.json文件。

如果某个目录下存在 tsconfig.json 文件,则说明该目录是 TypeScript 项目的根目录。 tsconfig.json 文件指定用于编译项目的根文件和编译选项。 (摘自html英文网站)

,有项目所需配置项的说明。

通常我们都是基于后端框架的,很难不依赖像VsCode这样的任何后端框架,所以我们在选择编译工具的时候最好不要使用ts-loader,因为它缺乏插件支持,但TS官方团队也选择与Babel合作,与现有后端生态兼容,因此推荐Babel。

如果我们需要在现有的项目中使用TS,我们需要遵守几个原则,共存原则、折边原则和严格原则。 根据字面意思,我们可以选择配置tsconfig.json配置项,设置不同对的严格级别。 而且我建议对某些部分启动严格模式,首先是项目的一小部分,其他部分采取自我培育的原则,这样项目才能正常发展并逐步迁移。

总结

本课程全面讲解 TS。 是否支持梁老师就看你的意愿了,我是通过极客时间发给我的7天试用面卡观看视频的。 《React高级实战》我也看完了,稍后会发。 专注于可以做出改变的领域前端typescript实战,并与你一起鼓励自己。

撰写时间:20190915

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 typescript 前端typescript实战-《TypeScript开发实践》总结 https://www.wkzy.net/game/166183.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务