TypeScript基础篇--类型介绍

在这里插入图片描述

// 布尔类型
let boo: boolean = true;
// 数值型
let num: number = 123;
// 字符串
let str: string = 'abs';
// 数组
let arr: Array<number> = [1, 2, 4];
let arr1: Array<string> = ['a', 'v'];
let arr2: string[] = ['a', 'b'];
// undefined, null
let und: undefined = undefined;
let nul: null = null;

// ts中的或
let some_var: number | string | undefined | boolean = 123;
some_var = 'a';
some_var = undefined;
some_var = true;
// any  不进行类型校验
let any_var: any = 123;
any_var = true;
// void 函数中没有返回值时用void
function func(arg: number): void { // arg: number规定参数类型

}
func(111)
function fun2(arg: string): boolean {
    // 返回布尔值
    return false // 不是void的话必须有返回值
}
fun2('a')

// 对象,使用接口来定义对象的类型  规范化接口名用大写的I开头
// interface 接口
interface IPerson {
    name: string;
    age: number;
    sex: string;
}
let obj: IPerson = { // 所有的类型和参数名必须与接口保持一致,多参数少参数都不行
    name: '张三',
    age: 20,
    sex: '男'
}

// 可选性
interface IPerson2 {
    name?: string;   // 加问号是指可选,有没有该属性都可以
    age: number;
    sex: string;
}
let obj2: IPerson2 = {
    age: 20,
    sex: '女'
}

// 接口继承 extends 属性= 自己的 + 继承的
interface IA extends IPerson {
    hobby: Array<string>;
}
let iaobj: IA = {
    name: 'hh',
    age: 20,
    sex: '男',
    hobby: ['aa', 'bb']
}

// 继承多个接口
interface IB {
    name: string
}
interface IC {
    age: number
}
interface ID extends IB, IC {
    sex: string
}
let idobj: ID = {
    name: '还好',
    age: 20,
    sex: '男'
}

// ts中的与  与继承类似
let person: IB & IC = {
    name: '还好',
    age: 20
}

// 不确定属性
interface IPerson3 {
    [propName: string]: any; // 键为字符串, 键值为任意值
}
let person3: IPerson3 = {
    name: 'hh',
    age: 20,
    b: true
}

// implements 接口实现
interface IPerson4 {
    name: string;
    age: number;
    getName: () => string; // string 为返回值类型
    getAge(): number;
}
class Person implements IPerson4 {
    name: string = '张三';
    age: number = 20;
    getName(): string {
        return this.name
    };
    getAge(): number {
        return this.age
    }
    // 类自己的方法
    sayHello(): void { }
}

// 类型断言
function getLength(str: number | string): number {
    // if ((str as string).length) {
    if ((<string>str).length) {
        return (str as string).length
    } else {
        return str.toString().length
    }
}
// 非空断言
function fun3(arg?: string): number {
    return arg!.length
    // 相当于 return arg && arg.length
}
fun3()

// 枚举 取索引值,默认从0开始
enum Color {
    red,
    green,
    yellow
}

Color.red // 0
Color.green // 1

// 反向映射
Color[0] // red

// 给枚举赋值
enum Color1 {
    red = 1,
    green,
    yellow
}
Color1[1] // red
Color1.red // 1
Color1.green // 2

enum Color2 {
    red = 1,
    green = 'abc', // 如果赋值非数字,无法自增,则后面的必须赋值
    yellow = 'bb'
}

// 泛型
function fun4<T>(arg: T):void {

}
fun4<number>(2) // 根据调用接口的设置类型传值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值