TypeScript入门 - 类型定义、函数、枚举、接口

可定义的类型

  • undefined : undefined;
  • number : 数值类型;
  • string : 字符串类型;
  • boolean : 布尔类型;
  • enum :枚举类型;
  • any : 任意类型;
  • void :空类型;
  • Array : 数组类型;
  • Date : 日期;
  • RegExp : 正则;
  • null :空类型;

类型定义

1.单类型定义

let str:string = 'hello'

2.多类型定义

let money:string|number = '100'
//或
let money:string|number = 200

3.数组定义

//第一种
let arr:number[] = [1,2,3]
//第二种  个人比较喜欢这种,Array关键词能够第一眼就知道是数组
let arr:Array<string|number> = [1,'1']

4.数组只读

//添加Readonly关键字
let arr:ReadonlyArray<string> = ['1']
//arr[0] = '2'  error
//arr.push('2')  error
//arr.length = 10  error
//let arr1 = arr  error
//arr = ['2']  ok

枚举

使用枚举我们可以定义一些带名字的常量

1.字符串枚举

enum SEX{
  man = '男',
  woman = '女',
  unknown = '未知'
}
let arr:Array<SEX> = [SEX.man]

2.数字枚举

//不使用初始化器
enum Direction {
    Up,    //0
    Down,  //1
    Left,  //2
    Right, //3
}
//使用初始化器
enum Direction {
    Up = 1,  //1
    Down,  //2
    Left,  //3
    Right, //4
}

3.反向映射

正向映射( name -> value) 反向映射( value -> name)

数字枚举成员还具有反向映射, 要注意的是不会为字符串枚举成员生成反向映射

enum Enum {
    A
}
let a = Enum.A;
let nameOfA = Enum[a]; // "A"

TypeScript可能会将这段代码编译为下面的JavaScript:

var Enum;
(function (Enum) {
    Enum[Enum["A"] = 0] = "A";
})(Enum || (Enum = {}));
var a = Enum.A;
var nameOfA = Enum[a]; // "A"

简单说下以上JavaScript代码发生了什么:

  1. 自执行函数为Enum添加属性,
  2. Enum["A"] = 0赋值后返回0作为索引,
  3. 发生第二次赋值Enum[0] = ‘A‘
  4. 此时的Enum内部为 {"A":0, 0:"A"}

函数

1.默认参数 可选参数

//返回值为字符串数组
function foo(msg:string, msg1:string='world', msg2?:string):Array<string> {
  return [msg,msg1]
}
say('hello')

?: 代表可选参数,但官方规范并不推荐这种做法

2.剩余参数

function foo1(...arr:Array<string>):void {
  arr.forEach(item=>console.log(item))
}
say1('1','2')

3.回调函数

function foo3(cb:()=>void) {
  cb()
}

4.表达式函数

let foo4:(num:string)=>void = function(){}

接口(interface)

接口的作用是对值所具有的结构进行类型检查,为这些结构定义规定,让你的代码按照规定去执行。

1.对象

readonly规定该属性只读

interface People{
  readonly name: string;
  height: number;
}
let worker:People = {name:'Joe',height:180}

2.索引签名

添加任意数量的额外属性

interface People{
  readonly name: string;
  height: number;
  [propName: string]: any;
}
let worker:People = {
    name:'Joe',
    height:180,
    sex:'man',
    eat:function(){}
}

3.定义函数

interface SayHandler {
  (people:string,msg:string):string
}
//参数名无需与接口的一致,甚至无需为参数规定类型,接口会自动进行判断
let sayMsg:SayHandler = function(p, m) {
  let result = p+':'+m
  return result
}
sayMsg('Joe','hello')

4.为函数规定参数

interface Car {
  color: string;
  brand?: string;
}
function CreateCar(config:Car):object{
    let price = 1000
    if(config.brand==='BMW'){
        price = 2000
    }
    return {color:config.color,price}
}
CreateCar({color:'red'})

使用es6解构参数重写??

function CreateCar({color,brand}:Car):object{
    let price = 1000
    if(brand==='BMW'){
        price = 2000
    }
    return {color,price}
}

5.继承

接口和类一样,可以使用继承,这样可以分割更多的模块,便于我们灵活的组合使用

interface People{
    say(msg:string):string
}
interface Man extends People{
    readonly name:string
}
let coder:Man = {
    name:'Wahfung',
    say(msg){
        return 'say:'msg
    }
}

原文地址:https://www.cnblogs.com/chanwahfung/p/11939190.html

时间: 2024-11-05 22:43:16

TypeScript入门 - 类型定义、函数、枚举、接口的相关文章

前端PHP入门-008-自定义函数

大家已经是有编程经验的WEB前端,那么对于函数已经很熟悉了,PHP当中定义函数跟你们学习的JavaScript一样 想想有哪些函数类型? 我们在实际开发过程当中需要有很多功能都需要反复使用到,而这些反复需要使用到的功能,我们能定义成 功能(函数) ,就尽可能定义成功能(函数).使用的时候, 吼一下 它的名字即可. 语法 那我们来学一下自定义函数的语法规定,语法规定如下: function 函数名([参数名1[=值1], 参数名2[=值2], 参数名n[=值n]]) { 函数中的功能体 [retu

TypeScript入门五:TypeScript的接口

TypeScript接口的基本使用 TypeScript函数类型接口 TypeScript可索引类型接口 TypeScript类类型接口 TypeScript接口与继承 一.TypeScript接口的基本使用 1.1定义TypeScript接口的指令(interface) 接口让我们想到的第一个短语就是(API).比如日常我们所说的调用某某程序的API一般都是跨应用的接口,如别的网站的或者APP的接口:还有我们每天都是用的编程语言的指令和内置的方法及属性,这些可以叫做编程语言的接口:还有令我们既

TypeScript入门三:TypeScript函数类型

TypeScript函数类型 TypeScript函数的参数 TypeScript函数的this与箭头函数 TypeScript函数重载 一.TypeScript函数类型 在上一篇博客中已经对声明TypeScript类型变量已经做了初步的解析,这里先回顾以下: 1 //声明函数 2 function add1(x:number,y:number):number{ 3 return x+y; 4 } 5 6 let add2 = function(x:number,y:number):number

TypeScript入门-枚举、类型推论

枚举 使用枚举可以定义一些具有名字的数字常量,和在C语言中一样都是使用关键字enum enum Direction { Up = 1, Down = 1<<2, Left, Right } 注意:一个枚举类型可以有多个枚举成员,每个枚举成员都有一个对应的数字值,这个数字值可以是常数或者是计算得出的值.当满足下列条件时,枚举成员的数字值被认为是常数 不具有初始化函数并且之前的枚举成员是常数. 在这种情况下,当前枚举成员的值为上一个枚举成员的值加1. 但第一个枚举元素是个例外. 如果它没有初始化方

C 开发学习 - 结构类型(枚举/结构/类型定义)

一.枚举 定义:枚举是 一种用户定义的数据类型,它用的关键字 enum 枚举类型名字通常并不真的使用,要用的是在大括号里地名字,因为它们就是常量符合,它们的类型是int,值则依次从0到n. enum colors {red, yellow, green} 语法:enum 枚举类型名称{名字0m, ..., 名字n}; 案例一:自动计数的枚举 // // main.c // enum // // Created by liuxinming on 15/4/26. // Copyright (c)

[C语言]进阶|结构类型: 枚举, 结构, 类型定义

--------------------------------------------------------------------- 枚举: // main.c #include <stdio.h> const int red = 0; const int yellow = 1; const int green = 2; int main(int argc, const char * argv[]) { /* 常量符号化:用符号而不是具体的数字来表示程序中的数字; 这样看到符号才能知道背

C# for Unity快速入门(连载14)_C#枚举类型

C# for Unity编程语言快速入门教程(连载14)_C#枚举类型 C#的枚举类型(用 "enum"关键字标识),按照笔者理解本质上是一个隐式继承了System.Enum的整形类.枚举类型的主要作用是:为了更好的识别一个变量的具体含义,且固定变量的使用"范围". 例如:形如如下定义 public enum Week{   Monday,  Tuesday,  Wenesday,  Thursday,  Friday,  Saterday,  Sunday }  

typeScript入门(二)函数与类

3.ts的函数 1)函数的返回值和参数 在函数的定义需要定义其的返回值可以void,来表示没有返回值 函数参数的定义,举个例子分析下吧 name:string,age?:number=23 冒号后面是参数的类型,加个?表示这个参数不是必传的,所以你就可以在这理解到,这个?如果某个参数写了,那后面都是需要加的,因为它不是必传的.在类型后面用个赋值方式就是给这个参数写一个默认参数. 当参数很多的时候,你就用需要用三点运算符数组来接受参数. (...arr:any[]) 这样的话,都有的的参数都是存在

typeScript入门(三)接口

接口我感觉是很常用的一块 定义标准: 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用.接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心这些类里方法的实现细节,它只规定这批类里必须提供某些方法,提供这些方法的类就可以满足实际需要. typescrip中的接口类似于java,同时还增加了更灵活的接口类型,包括属性.函数.可索引和类等. 1)属性类接口 举个例子分析下 interface Full