【学习笔记】TypeScript

本文是关于 TypeScript 的学习笔记,介绍了 TypeScript 的概述、基本特点和优势,详细讲解了开发环境搭建,包括安装依赖、配置文件 tsconfig.json、使用 webpack 打包 TypeScript 代码等。此外,还探讨了 TypeScript 的基础概念,如类型声明、类、继承、抽象类、接口和范型。
摘要由CSDN通过智能技术生成

1、介绍

      1.1、概述

        TypeScript 是由微软开发并维护的一种开源编程语言。它是 JavaScript 的一个超集,主要用于开发大型应用程序。TypeScript 提供了对 JavaScript 的静态类型检查和现代编程功能,同时保留了与 JavaScript 完全兼容的特点

      1.2、基本特点

基本特点 描述
类型系统 TypeScript 是强类型语言,提供了静态类型检查。开发者可以在编写代码时指定变量、函数参数和返回值的类型,从而在编译时捕获潜在的类型错误
编译器 TypeScript 代码需要通过 TypeScript 编译器(tsc)编译为 JavaScript 代码。编译器可以将 TypeScript 转换为任何版本的 JavaScript(例如 ES5、ES6 等)
接口 TypeScript 支持接口,允许开发者定义对象的结构和类型,从而提供更强的代码约束
类和继承 TypeScript 支持基于类的面向对象编程,包括类的定义、继承、公共和私有成员等

      1.3、优势

优势 描述
代码可维护性 由于有类型检查,TypeScript 使得代码更易于阅读和维护,减少了运行时错误
开发工具支持 TypeScript 与多种开发工具(如 Visual Studio Code)紧密集成,提供智能提示、代码补全和重构等功能,提升开发效率
社区和生态系统 TypeScript 拥有活跃的社区和丰富的生态系统,包括大量的类型定义文件(如 DefinitelyTyped),使得使用第三方库时也能享受类型安全的好处

      1.4、开发环境搭建

        ① 安装依赖:npm i -g typescript
        ② 编写一个 ts 脚本 index.ts

// 定义一个接口
interface Person {
   
  name: string;
  age: number;
}

// 实现接口的类
class Student implements Person {
   
  constructor(public name: string, public age: number, public grade: number) {
   }

  study() {
   
    console.log(`${
     this.name} is studying.`);
  }
}

// 创建一个 Student 实例
const student: Student = new Student('John', 20, 3);
student.study();  // 输出: John is studying.

        ③ 编译 ts 文件:tsc index.ts 编译之后能在同一目录下看到编译后的 js 文件 index.js(如果用 vsCode 编辑器的话,TypeScript 编译器扫描到 index.js、index.ts 中都有 Student 类会有下划线警告,因此可以选择使用 WebStorm 编辑器,因为编译后 index.ts 变得跟文件夹一样,index.js 存放在这个“文件夹”下,因此不会有警告)

// 实现接口的类
var Student = /** @class */ (function () {
   
    function Student(name, age, grade) {
   
        this.name = name;
        this.age = age;
        this.grade = grade;
    }
    Student.prototype.study = function () {
   
        console.log("".concat(this.name, " is studying."));
    };
    return Student;
}());
// 创建一个 Student 实例
var student = new Student('John', 20, 3);
student.study(); // 输出: John is studying.

Tip:在没有配置文件时,默认编译后的 JS 支持 ES3,所以会看到在 ts 中使用的 let 会被转换成 var

        ④ 验证 js 文件是否可以使用:node .\index.js

2、基础

      2.1、类型声明

        类型声明式 TS 非常重要的一个特点,通过类型声明可以指定 TS 中变量的类型,指定类型后当为变量赋值时,TS 编译器会自动检查值是否符合类型的声明,符合则成功赋值、否则报错(C++、Java 的特性)

// 先声明 后赋值
let a:number
a=1024
console.log(a);

// 声明后顺便赋值
let b:boolean=true
console.log(b);

// 直接赋值会自动检测类型
let c='ccc'
console.log(typeof c);

// 没有规定形参类型
function sum1(a,b){
   
    return a+b
}
console.log(sum1(123,"456"));

// 规定形参类型
function sum2(a:number,b:number){
   
    return a+b
}
console.log(sum2(123,456));

// 规定返回值类型 像上面那种没有规定的就自动判断
function hello():string{
   
    return 'Hello~'
}
console.log(hello());
类型 描述
number 数字
string 字符串
boolean 布尔值
字面量 例如 let a = number | “abc”
// 字面量类型
// 简单
let a: 10; // 声明a只能被赋值10
a = 10;
console.log(a);
// 多个类型使用 | 拼接
let b: 1 | "a" | boolean;
b = true;
console.log(b);
// 使用 type 来存储类型
type C = number | string;
let c: C = 3;
类型 描述
any 任意类型,随便赋值给别人不报错
unknown 任意类型,随便赋值给别人会报错
let a:number
let b:boolean
let c:string

// any类型 不推荐使用 因为可以随便赋值给别人不报错
// 显示声明
let d: any;
d = 1;
d = "a";
a = d; // 随便赋值给别人不报错
// 隐式声明
let e; // 相当于 let e:any;
e = 1;
e = "a";

// unknown 跟any类似,只不过不能赋值给别人
let f: unknown;
f = "a";
f = 10;
// 给别人赋值法一:包裹在判断语句中
if (typeof f === "string") c = f; //f在这个作用域里是string类型
// 给别人赋值法二:类型断言
b = f as boolean; //告诉编辑器执行到这里的时候f将会是boolean的值,这块别给我报错
类型 描述
object / { } 对象
// object类型表示只能赋值一个对象
let a: object = {
   };
let b: {
   }</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值