ts学习~类型

一, ts开发环境搭建

(1)安装Node.js

(2)使用npm全局安装typescript

        -进入命令行

        -输入 :

npm i -g typescript

(3)创建一个ts文件

(4)使用tsc对ts文件进行编译

        -进入命令行

        -找到ts文件所在目录

        -执行命令:tsc xxx.ts

二,ts类型声明

        - 通过类型声明可以指定ts中变量(参数, 形参)的类型

        - 指定类型后,当为变量赋值时,ts编译器会自动检查值是否符合类型声明,符合则赋值,否则报错

        - 简而言之, 类型声明给变量设置了类型,使得变量只能存储某种类型的值

        语法:

let 变量: 类型
let 变量: 类型 = 值
function(参数: 类型, 参数: 类型): 类型{
    .......
}

    自动类型判断

        - ts拥有自动的类型判断机制

        - 当对变量的声明和赋值是同时进行的,ts编译器会自动判断变量的类型

        - 所以如果你的变量的声明和赋值是同时进行的,可以省略掉类型声明

let a:number;
a = 10;
// a = 'hello';//此行代码会报错, 因为a的类型是number类型,不能赋值字符串

let b:string;
b = 'hello';
// b = 112;

// 声明完变量直接赋值
let c:boolean = false;

// 如果变量的声明和赋值是同时进行的,ts可以自动对变量进行类型检测
let d = true;
d = false;

// js中函数是不考虑参数的类型和数量的
// function sum(a, b){
//     return a  + b;
// }
// sum(123, 456);//579
// sum(123, '456');//'123456'

function sum(a:number, b:number):number{
    return a  + b;
}
let resule = sum(123, 456);

三,ts类型

类型例子描述
number1, -33, 2.5任意数字
string‘111’, 'hi', hi任意字符串
booleantrue, false布尔值true或者false
字面量其本身限制变量的值就是该字面量的值
any*

任意类型

unknown*类型安全的any
void 空值(undefined)没有值(或undefined)
never没有值不能是任何值
object{name:'孙悟空'}任意的js对象
array[1, 2, 3]任意js数组
tuple(元组)[4, 5]ts新增类型,固定长度数组
enum(枚举)enum(A,B)枚举,ts新增类型

下面是针对不同的类型进行学习的具体内容:

// 直接使用字面量进行类型声明

let a: 10;
a = 10;

// 可以使用 | 连接多个类型(联合类型)
let b: 'male' | false;
b = 'male';
b = false;


let c: string | boolean;
c = 'helllo';
c = true;

// any表示的是任意类型,一个变量设置类型any相当于对该变量关闭了ts的类型检查
// 使用ts时,不建议使用any类型
// let d: any;//显式的any

// 声明变量如果不指定类型, 则ts解释器会自动判断变量的类型为any(隐式的any)
let d;
d = 10;
d = true;
d = 'hello';


//unknown 表示未知类型的值
let e: unknown;
e = 10;
e = true;
e = 'hello';


let s: string;

// d的类型是any,他可以赋值给任意变量
s = d;

// unknown 实际就是一个类型安全的any
// unknown 类型的变量不能直接赋值给其他类型的变量
// s = e;//报错
if(typeof e === 'string'){
    s = e;
}

// 类型断言, 可以用来告诉解析器变量的实际类型
s = e as string;
// 或
s = <string>e;

// void用来表示空, 以函数为例,就表示没有返回值的函数

function fn1():void{}


// never 表示永远不会返回结果
function fn2(): never{
    throw new Error("never");
}
//object 表示一个js对象
let a: object
a = {};
a = function () {}

//{} 用来指定对象中可以包含哪些属性

//属性名后加?表示属性是可选属性
 let b = {name:string, age?:number}
b = {name:'1111'};

//[propName:string]:any  表示任意类型的属性
let c: {name:string, [propName:string]:any}
c = {name:'111', age:10, gender:"男"}

/*
    设置函数结构的类型声明
        语法:(形参:类型, 形参:类型) => 返回值

*/

let d: (a:string, b:string)=>number
    d = function(n1, n2):number{
        return n1 + n2
    }

//string[]或者<Array>string 表示字符串数组
let e: string[];
e = ['1', '2']

let g: <Array>string
g = ['1', '2', '3']

//元组: 固定长度的数组

let h:[number, string]
h = [1, 'h'];

//enum: 枚举

enum Gender= {
    Male = 1,
    Female = 2
}
let i:{name:string, gender:Gender}
i = {

     name: "111",
     gender: Gender.Male
}


//&表示同时
let j: {name: string} & {age:number};
j = {name:'1111', age:10}


//类型别名
//let k: 1 | 2 | 3 | 4
//let l: 1 | 2 | 3 | 4
type myType = 1 | 2 | 3 | 4
let k: myType
let l: myType
let m: myType

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值