TypeScript介绍

TypeScript 是 JavaScript 的一个超集

它的第一个版本发布于 2012 年 10 月,vue3和react也完全支持typescrpt

为什么选择 TypeScript:

  1. 类型系统实际上是最好的文档,大部分函数看看类型定义可以知道如何使用
  2. 可以编译阶段发现部分错误,这总比在运行时候出错
  3. 增强了编辑器和 IDE代码补全接口提示跳转定义、重 的功能,包括构等

浏览器只能识别JS代码,TS->编译->运行

运行环境

1.创建文件

2.编译 安装npm i typescriptg

3.tsc 文件名.ts(将他编译成js文件

4.关于重名解决tscinit   生成 tsconfig.json

5.自动编译tscw 

6.降级编译,在ts.config.json中,’target‘:’ES2015’

7.严格模式strict

function say(content:string) {  }

8.指定编译输出路径

 

基础语法

基础数据类型包括:

布尔值数值字符串nullundefined 以及 ES6 中的新类型 
Symbol 和 ES10 中的新类型 BigInt。

ts使用基础类型定义变量

let count:number = 100
let name:string = '张三'
let isDone:boolean = false
let u: undefined = undefined;
let n: null = null;

数组的类型:

  1. 类型+[ ]来表示数组 
  2. let arr:number[]=[1,2,3]
  3. 数组泛型Array<元素类型&gt;
  4. let list:Array<number>=[1,23]

对象类型:

在TypeScript中,我们使用接口Interfaces定义对象的类型(我们约束了tom接口和person)

interface Person{
   name:string;
   age:number;
 }

let tom: Person={
   name:'Tom',
   age:25
};

 

联合类型Union Types:表示取值可以为多种类型中的一种

let value:string|number='123'

 

任意类型any:任意值用来表示允许赋值为任意类型

变量如果在声明时候,未指定其类型,那么它会被识别为任意值类型:

类型推论:TypeScript 会在没有明确的指定类型的时候推测出一个类型,这就是类型推论。

let mynumber = 'seven'

 

 

空值void:在 TypeScript 中,可以用 void 表示没有任何返回值的函数

函数的类型:

  1. 形参类型
  2. 返回值类型  void空值,无返回值
function fn(): void {
  console.log("fn >>>>");
}

function fn1(): number {
  return 100;
}

/**
 * 
 * @param name 
 * @param age 可选参数
 * @returns 
 */
function fun2(name: string, age?: number): string {
  return "姓名是" + name + " 年龄是 " + age;
}

fun2("jack",20);

 

类型断言as

时候你会遇到这样的情况,你会比TypeScript更了解某个值的详细信息。 通常这会发生在你清楚地知道一个实体具有比它现有类型更确切的类型。

通过类型断言这种方式可以告诉编译器,“相信我,我知道自己干什么”。 类型断言好比其它语言里的类型转换,但是不进行特殊数据检查解构

(some是一个字符串类型,starLength是一个数字类型,将string类型的Some的长度赋值starLength)

尖括号写法

let some:any=’this is a string’

let starLength:number=(<string>some).length

 as语法

let some:any=’this is a string’

let starLength:number=(some as string).length

泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用时候再指定类型的一种特性

泛型语法尖括号 <> 里面写类型参数,一般用 T

泛型像一个占位符一个变量

 泛型方法

 泛型约束:在函数内部使用泛型变量时候,不知道他的类型时,不能随意使用他的属性方法

function loggingIdentity<T>(arg:T):T{
    console.log(arg.length);
    return arg;
}
此时,T不一定包含length,编译时会报错
function loginLength<T extends ILength>(arg:T):number{
    return arg.length
}
const len1:number = loginLength('hello')
const len2:number = loginLength([1,2,3])
// const len3:number = loginLength(100)
console.log(len1);

使用了extends约束泛型T必须符合lengthwise形状包含length属性,不会报错

类型别名:(等量代换)

type ageType = number|string // 定义一个名为ageType类型别名表示string字符串和number类型

let age1: ageType = '100' 
let age2: ageType = '200' 
// 接口定义对象类型可以继承
interface IPerson3{
    name:string
    age:number
}
interface IPerson3{
    score:number
}
const obj2:IPerson3 = {
    name:'rose',
    age:21,
    score:99
}

元组:数组合并了相同类型的对象,而元组合并不同类型的对象

let tom:[string,number]=['tom',25]

枚举类型: (遍历

 

 

public:公共的,默认属性方法public

private私有的,不能声明在他的类的外部访问

protected :受保护的,和private类似,区别是它在子类中允许被访问

 

模块es6支持 export  export default   import

 声明文件:(文件.d.ts)

当使用第三方库时我们需要引用它的声明文件,才能获得对应代码补全、接口提示功能

原文地址:https://blog.csdn.net/qq_63322025/article/details/128805997

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_40198.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注