从零开始的TS世界-01

184 阅读2分钟

本章主要了解ts开发环境搭建,ts的基础类型和推导

ts开发环境搭建

  • npm初始化:npm init -y
  • 安装rollup,typescript,和插件typescript:npm install rollup rollup-plugin-typescript2 typescript -D
  • rollup配置文件rollup.config.js

import ts from 'rollup-plugin-typescript2'; // ts 插件
import path from 'path'


export default {
    input:'src/index.ts',
    output:{
        file:path.resolve('dist/bundle.js'),
        format:'iife', // 自执行函数 
        // name:'xxx',
        sourcemap:true // umd 可以支持 amd 和 commonjs规范     增加一个作用域
    },
    plugins:[
        ts(), // 是有ts() 内部会创建一个默认的配置,如果你有配置文件他就会找自己的配置文件
    ]
}
  • 生成ts的配置文件tsconfig.jsonnpx tsc --init 这时会报错,这里要更改配置文件的module:ESNext,原先不报警告是因为
plugins:[ ts()], // 是有ts() 内部会创建一个默认的配置

开发环境搭建完成。

基础类型

  • 布尔,数字,字符串:
let bool:boolean = true;
let num:number = 10;
let str:string = 'hello';
  • 元组类型: 限制长度和类型 --对应
let a: [string, number] = ['1',2]
a.push(1) // 可以使用push,但只能push对应类型
a.push(true) // 错误
  • 数组类型:
let arr1:number[] = [1,2,3];
let arr2:string[] = ['1','2','3'];
let arr3:(number|string)[] = [1,'2',3];
let arr4:Array<number | string> = [1,'2',3]; // 泛型方式来声明
  • 枚举类型:
enum a{
    a,
    b,
    c
}
console.log(a.a) // 0
enum a{
    a = 12,
    b,
    c
}
console.log(a.b) // 13
enum a{
    a = '13',
    b = '2',
    c = '33'
}
console.log(a.a) // 13
  • any类型: 不进行类型检测

  • null,undefined类型:任何类型的子类型

let a:number
a = undefined
a = null

  • void类型 只能接受null 和undefined。一般用来函数返回值
let a:void
a = undefined
a = null

  • never:任何类型的子类型,代表不会出现的值,不能把其他类型赋值给never
  • Symbol:标识独一无二
let a = Symbol('a')
let b = Symbol('a')
console.log(a === b) // false
  • BigInt:
let a = Number.MAX_SAFE_INTEGER + 2
let b = Number.MAX_SAFE_INTEGER + 1
console.log(a === b) // true

let a: bigint = BigInt(Number.MAX_SAFE_INTEGER)
console.log(a + BigInt(2) === a + BigInt(1)) // false
  • object对象类型:表示非原始类型
let a: object = {}

类型推导

  • 声明变量没有赋值时默认是any类型
let a
a = 1
a = 'a'

  • 声明变量赋值时以赋值类型为准
let a = '1'
a = 1 // 错误
a = 'a // 正确
  • 包装对象 使用基本数据类型时,调用基本数据类型上的方法,默认会讲原始数据包装成对象类型
let a:number = 1 // 正确
let b:number = Number(1) // 正确
let c:number = new Number(1) // 错误
let d:Number = new Number(1) // 正确
  • 联合类型 使用联合类型时,没有赋值只能访问联合类型中的共有的方法和属性
let a: string | number
console.log(a.toString()) // 正确 公共方法
a.toFixed() // 错误
a.toLowerCase()  // 错误
a = 1
a.toFixed() // 正确
a = ''
a.toLowerCase()  // 正确
  • 类型断言
let a: string | number
( a as number).toFixed() // 正确
  • 字面量类型 可以用字面量当类型,类似枚举
type a = 'a' | 'b' | 'c' | 'd'
let aaa:a = 'e' // 错误
let aaaa:a = 'a' // 正确