TypeScript基础整理

TypeScript 由微软开发的自由和开源的编程语言,它可以在任何任何操作系统上运行。TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改

2.1、开发环境

typescript目录浏览器还不能支持,需要把编写好的ts编译转为js,编译的环境为nodejs环境。

  • 下载nodejs      nvm
  • 切换npm镜像源   nrm
  • 使用npm全局安装typescript

npm i -g typescript

// 检查是否安装成功  查看到版本,表示安装成功

tsc -v    / 局部安装  npx tsc -v

  • 创建一个以.ts扩展名文件
  • 使用tsc命令对ts文件进行编译

// 使用命令行工具,进入到对应的文件目录中,执行如下命令

tsc app.ts

三、基本类型

类型声明

类型声明是TS非常重要的一个特点,通过类型声明可以指定TS中变量(参数、形参)的类型,当为变量赋值时,TS编译器会自动检查值是否符合类型声明,符合则赋值,否则报错,类型声明给变量设置了类型,使得变量只能存储某种类型的值。

ts中的类型名称一定小写

  • 自动类型(类型推论)耗性能

当对变量的声明和赋值是同时进行的,TS编译器会自动判断变量的类型,工作中建议还是手动指明变量类型,尽量少的去让TS自动判断类型。

 

3.1、布尔值

let isDone: boolean = false;

3.2、数字

let decLiteral: number = 6;           // 十进制

let hexLiteral: number = 0xf00d;     // 十六进制

let binaryLiteral: number = 0b1010;  // 二进制

let octalLiteral: number = 0o744;    // 八进制

3.3、字符串

let name: string = "bob"

let username:string = `aaabbbccc`

3.4、anyunknown

any任意类型, 类型安全的any类型

let app:any = 66

let app:unknown = 66

 

3.5、void

它表示没有任何类型, 声明一个void类型的变量没有什么大用,

因为你只能为它赋予undefined和null,

一般多用于函数返回值指定

let unusable: void = undefined;
function warnUser(): void {
    console.log("This is my warning message");
}

3.6、null 和 undefined

undefined和null两者各自有自己的类型分别叫做undefined和null。 和 void相似,它们的本身的类型用处不是很大

let u: undefined = undefined;

let n: null = null;

3.7、never

never类型表示的是那些永不存在的值的类型

function error(message: string): never {
  throw new Error(message);
}

 在ts里有类型检查,所以永远都达不到else

3.8、字面量

可以使用字面量去指定变量的类型,通过字面量可以确定变量的取值范围

let color: 'red' | 'blue' | 'green';
let num: 1 | 2 | 3;

3.9、枚举(enum)    // 用的比较多

使用枚举类型可以为一组数值赋予友好的名字

 

 

 3.10、object

let obj: object = {}
let obj:{id:number,name?:string}  // ?可选
// id是必须要有的,后面可以任意key,key为字符串,值为任意类型
let obj:{id:number,[props:string]:any}
// 给函数参数定义类型和返回值定义类型
type fnType = {(a:number,b:number):number }
const fn:fnType = (a:number,b:number):number=>a+b

3.11、array

let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];

 

  不确定长度想随便写用any

3.12、元组(tuple)    // 不怎么用

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string和number类型的元组。

let x: [string, number]
x = ["hello", 10]

 

3.13、自定义类型    // ts中用的最多的

 

 

3.14、联合类型    // 用的挺多的

给变量指定多个类型

 

3.15、类型断言

有些情况下,变量的类型对于我们来说是很明确,但是TS编译器却并不清楚,此时,可以通过类型断言来告诉编译器变量的类型,断言有两种形式

这种写法不常用,工作不会这样写

 

 

 


四、ts编译配置

网址:编译选项 · TypeScript中文网 · TypeScript——JavaScript的超集

tsc编译是可以通过tsconfig.json来进行自定义配置。

tsc --init   它会自动生成一个tsconfig.json文件

在项目根目录下面创建名称为tsconfig.json文件

配置常用的配置选项

{
    // 用来指定哪些ts文件需要被编译
    // src目录下面的任意目录和任意文件
    "include":[
      "./src/**/*"
    ],   
    // 编译器的选项
    "compilerOptions":{
      // 用户指定ts被编译为es的版本 默认为转为es3 esnext最新版本
      "target":"es5",
      // 指定要使用的模块化规范
      "module":"es6",
      // 用户来指定编译后文件所在的目录
      "outDir":"./dist",
      // 是否对js文件进行编译,默认是false
      "allowJs": true,
      // 是否检查js代码,是否符合语法规范,默认false
      "checkJs": true,
      // 当有错误时不生成编译后的文件 true有错就不生成
      "noEmitOnError":true,
      // ------------------------------------------------
      
      // 开启严格检查
      "strict": true
    }
}

配置好配置文件后,就可以执行

// 实时编译,只要文件有修改就会自动进行编译,不在需要修改后手动执行

tsc -w


五、Typescript类

TypeScript 是面向对象的 JavaScript。类描述了所创建的对象共同的属性和方法。

TypeScript 支持面向对象的所有特性,比如 类、接口等。

  • TS中属性具有三种修饰符

public(默认值),可以在类、子类和对象实例中读取和修改

protected ,可以在本类、子类中读取和修改

private ,可以在本类中读取和修改

class 类名 {
属性名: 类型;
// 静态属性
static 属性名:类型;
// 只读属性
readonly 属性名:类型 = 值;

    // 构造方法
    constructor(参数: 类型){
        this.属性名 = 参数;
    }
    // 实例方法
    方法名(){
        ....
    }
}


5.5、接口

接口主要负责定义一个类的结构,类要实现此接口后,对类只有包含接口中定义的所有属性和方法时才能定义成功。接口他可以称为规范。

  • 类接口
interface Person{
   name: string;
   say():void;
}

class Student implements Person{
   constructor(public name: string) {}

   say() {
       console.log('大家好,我是'+this.name);
   }
}

  • 函数接口
// 定义接口
interface searchInterface {
  (kw: string, page?: number): string[]
}

// 使用
const searchFn: searchInterface = (kw:string):string[] => ['aaa', 'bbb']

 

 

六、泛型    // 用的非常非常多

定义一个函数或类时,有些情况下无法确定其中要使用的具体类型(返回值、参数、属性的类型不能确定), 此时泛型便能够发挥作用。

6.1、泛型函数

在没有没学过泛型之前可以使用,但是这样使用any会关闭TS的类型检查,其次这样设置也不能体现出参数和返回值是相同的类型

 

 6.2、泛型类

 

 


七、react+ts

7.1、初始化react开发为ts环境

// 前提是本地已安半了typescript编译器  npm i -g typescript

npx create-react-app myapp(项目名) --template typescript

或 vite

 

 在使用了ts后,组件后缀名,一定要叫tsx

 d.ts文件不能删

类组件

 

 

 不用的、备份文件、不能叫tsx了

 函数组件

这里可以用自动推论

 

todolist

 

 

 

 

 

 

redux

 

 

 

 

 

 

 

 

 

 网络请求

 

 

 

  加上cors=T&就能跨域

json字符串自动生成ts类型

Instantly parse JSON in any language | quicktype

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值