Typescript语法简单汇总

摘要:
莱塔;//A是任何类型A=5;a=“a”;安慰日志3.Typescript类型推断:Typescript会根据类型推断的规则来推断一个类型。constant:string|number=1;安慰日志;//错误:属性“length”不存在类型“number”控制台日志;5.Typescript中的对象类型接口:它可以描述类的部分抽象行为以及对象的结构和形状数字[propName:string]:任意;}Constobj33:Istate3={name:'Jay',年龄:20,性别:“men”,isMary:false}//只读属性接口Istate4{name:string;只读年龄:number;}constobj4:Istate4={name:“Jack”,年龄:55}obj4.年龄=56;//不能分配给“ge”,因为它是唯一的财产。6.Typescript数组类型:1)可以用“type[]”方法表示;2) 可以使用数组通用“array<Type>”表示;3) 可以使用接口表示//声明型函数funType:number{return;}constageNum:number=funType;//不确定的函数参数functionfunType2(名称:字符串,年龄:数字,性别?

1、Typescript原始数据类型:

string

number

boolean

null

undefined

enum

symbol

空值一般采用void表示,void可以表示变量,也可以表示函数返回值。

2、Typescript中的任意值:

任意值(any)用来表示允许赋值为任意类型。

申明一个变量为任意值后,对它的任何操作,返回的内容的类型都是任意值。

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

let a; // a是任意类型
a = 5;
a = 'a';

console.log(a);
Typescript语法简单汇总第1张

3、Typescript的类型推论:

Typescript会依照类型推论的规则推断出一个类型。

let b = 1; // b是number类型
b = 2;
console.log(b);
Typescript语法简单汇总第1张

如果定义的时候没有赋值,不管之后有没有被赋值,都会被推断出any类型而完全不被类型检查。

4、Typescript联合类型:

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

只能访问此联合类型内的所有类型里共有的属性和方法。

const a: string | number = 1;
console.log(a.length); // 报错:Property 'length' does not exist on type 'number'
console.log(a.toString());
Typescript语法简单汇总第1张

5、Typescript中对象类型-接口:

可描述类的一部分抽象行为,也可描述对象的结构形状。

接口一般首字母大些,有的编程语言建议接口的名称前加上“I”前缀。

赋值的时候变量的形状必须跟接口的形状保持一致。

接口中可定义可选属性,只读属性,任意属性。


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

const obj1: Istate1 = {
    name: "Tom",
    age: 10
}

// 可选属性
interface Istate2 {
    name: string;
    age?: number;
}

const obj2: Istate2 = {
    name: "张三",
    age: 18
}

const obj3: Istate2 = {
    name: "李四"
}

// 属性个数不确定的时候, any必须是任意类型
interface Istate3 {
    name: string|number;
    age?: number;
    [propName: string]: any;
}

const obj33: Istate3 = {
    name: 'Jay',
    age: 20,
    sex: "men",
    isMary: false
}
Typescript语法简单汇总第1张
// 只读属性
interface Istate4{
    name: string;
    readonly age: number;
}

const obj4: Istate4 = {
    name: "Jack",
    age: 55
}

obj4.age = 56; // Cannot assign to 'age' because it is a read-only property.
Typescript语法简单汇总第1张

6、Typescript数组类型:

1) 可采用"类型[]"法表示;

2) 可采用数组泛型“Array<类型>”表示法;

3) 可采用接口表示法。

// “类型[]”表示法
const arr1: number[] = [1, 2, 3, 4, 5];
const arr2: string[] = ["1", "2", "3"];
const arr3: any[] = [1, '2', true];
Typescript语法简单汇总第1张
// "Array<类型>"表示法
const arr4: Array<number> = [1, 2, 3];
const arr5: Array<string> = ["1", "2", "3"];
const arr6: Array<any> = [1, "2", true];
Typescript语法简单汇总第1张
// 接口表示法
interface Istate{
    name: string;
    age: number;
}

interface Iarr{
    [index: number]: Istate;
}

const arr7: Iarr = [
    {
        name: 'Bill',
        age: 66
    },
    {
        name: "Pony",
        age: 51
    }
];

const arr8: Istate[] = [
    {
        name: 'Bill',
        age: 66
    },
    {
        name: "Pony",
        age: 51
    }
];

const arr9: Array<Istate> = [
    {
        name: 'Bill',
        age: 66
    },
    {
        name: "Pony",
        age: 51
    }
];
Typescript语法简单汇总第1张

7、Typescript函数类型:

函数约束:有函数本身的参数约束,返回值约束;

还有函数本身赋值的变量的约束;

可采用重载的方式才支持联合类型的函数关系。

// 申明式类型的函数
function funType(name: string, age: number): number{
    return age;
}

const ageNum: number = funType("Tom", 18);

// 函数参数不确定
function funType2(name: string, age: number, sex?: string): number{
    return age;
}

const age2Number = funType2("Tom", 18, "男");

// 函数参数的默认值
function funType3(name="Tom", age=18): number{
    return age;
}

const age3Number = funType3();
console.log(age3Number)
Typescript语法简单汇总第1张
// 表达式类型的函数
const funType4 = function(name: string, age: number): number{
    return age;
}

const funType: (name: string, age: number) => number  = function(name: string, age: number): number{
    return age;
}

interface IfunType6{
    (name: string, age: number): number;
}

const funType6: IfunType6 = function(name: string, age: number): number{
    return age;
}
Typescript语法简单汇总第1张
// 对于联合类型的函数可以采用重载的方式
// 输入是number,输出也是number
// 输入是string,输出也是string
function getValue(value: number): number;
function getValue(value: string): string;
function getValue(value: number|string): number|string{
    return value;
}

const a: number = getValue(1);
const b: string =getValue("1");
Typescript语法简单汇总第1张

8、Typescript类型断言:

类型断言可以用来手动指定一个值的类型。

语法:<类型>值或者值 as 类型。

在tsx语法(React的jsx语法的ts版)必须采用后面一种。

类型断言不是类型转换,断言成一个联合类型中不存在的类型是不允许的。

// 类型断言 只能断言联合类型中存在的类型
function getAssert(name: string|number){
    //return (<string>name).length;
    return (name as string).length;
}
Typescript语法简单汇总第1张

9、Typescript类型别名:

类型别名可以用来给一个类型起一个新名字。

采用关键字,比如“type name = string | number”。

例子中name就表示可以设置字符串或者数值类型。

也可用type来约束取值只能是某些字符串中的一个,如:

type eventNames = "click" | "scroll" | "mousemove"

// 类型别名
//const str: string|number = "1";

type strType = string | number | boolean;
let str: strType = "1"
str = 1;
str = true;
console.log(str);
Typescript语法简单汇总第1张
// 对于接口也可以采用类型别名
interface MuchType1{
    name: string;
}

interface MuchType2{
    age: number;
}

type MuchType = MuchType1 | MuchType2;

const obj1: MuchType = {
    name: "Jack"
}

const obj2: MuchType = {
    age: 20
}

const obj3: MuchType = {
    name: "Jay",
    age: 22
}

console.log(obj1);
console.log(obj2);
console.log(obj3);
Typescript语法简单汇总第1张
// 限制字符串的选择
type sex = "男" | "女";

function getSex(s: sex): string{
    return s;
}

getSex("男");
Typescript语法简单汇总第1张

10、Typescript枚举:

枚举(enum)类型用于取值被限定在一定范围内的场景。

采用关键字enum定义,比如:enum days{Sun, Mon, Tue, Wed, Thu, Fri, Sat}。

枚举成员会被赋值为从0开始递增的数字,同时也会被枚举值到枚举名进行反向映射。

// 使用枚举可以定义一些有名字的数字常量
enum Days{
    Sun,
    Mon,
    Tue,
    Wed, 
    Thu, 
    Fri, 
    Sat
}

console.log(Days.Sun); // 0
console.log(Days.Sat); // 6
console.log(Days); // {0: "Sun", 1: "Mon", 2: "Tue", 3: "Wed", 4: "Thu", 5: "Fri", 6: "Sat", Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, …}
console.log(Days[0] === "Sun"); // True
Typescript语法简单汇总第1张

11、Typescript类的装饰符:

public、private和protected。

12、Typescript泛型:

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

// 函数中使用泛型
function createArr<T>(length: number, value: T): Array<T>{
    const arr = [];
    for(let i = 0; i<length; i++){
        arr[i] = value;
    }

    return arr;
}

const strArr: string[] = createArr(8,"a");
console.log(strArr);
const numArr: number[] = createArr(6, 1);
console.log(numArr);

// 接口当中使用泛型
interface Icreate{
    <T>(name: string, value: T): Array<T>;
}

const func: Icreate = function<T>(name: string, value: T): Array<T>{
    return [];
}

const strArr2: number[] = func("Jack", 3);
Typescript语法简单汇总第1张

免责声明:文章转载自《Typescript语法简单汇总》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇One网络模拟器探索之二:初次运行C#日期格式化下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

delphi 文件的操作

转载至:http://hi.baidu.com/endlesslove137/blog/item/86f1669990a7ed046f068ced.html //判断文件是否存在 FileExists//判断文件夹是否存在 DirectoryExists//删除文件 DeleteFile; Windows.DeleteFile//删除文件夹 Remove...

docker 自动更新镜像和容器

原文: https://www.cnblogs.com/wangjq19920210/p/12692068.html快速开始Watch­tower 本身被打包为 Docker 镜像,因此可以像运行任何其他容器一样运行它:(然后所有容器都会自动更新,也包括 Watch­tower 本身) docker run -d --name watchtowe...

Java 生成指定时间范围的随机时间、随机中文姓名、随机字符姓名、随机数

解决问题: Java生成指定时间范围的随机时间? Java生成随机中文姓名? Java生成随机字符姓名? Java生成随机数? 代码: import java.io.UnsupportedEncodingException; import java.text.ParseException; import java.text.SimpleDateFormat...

块状链表[ext/rope]

2008年OI集训论文上有介绍<对块状链表的一点研究>,其主要是结合了链表和数组各自的优点,链表中的节点指向每个数据块,即数组,并且记录数据的个数,然后分块查找和差入。在g++头文件中,<ext/rope>中有成型的块状链表,在using namespace __gnu_cxx;空间中,其操作十分方便。 基本操作: rope lis...

C#连接MySQL数据库

本文章是建立在已经安装MySQL数据库的前提,默认安装在C:Program Files (x86)MySQL,建议在安装时选中Connector.NET 6.9的安装,里面有MySQL与C#连接的动态链接库。 帮助文档C:Program Files (x86)MySQLConnector.NET 6.9DocumentationConnectorNET.c...

【C++】map容器的用法

检测map容器是否为空: 1 #include <iostream> 2 #include<map> 3 #include<string> 4 using namespace std; 5 int main() 6 { 7 //检测容器是否为空 8 map<string, strin...