IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 1.TypeScript数据类型定义 -> 正文阅读

[JavaScript知识库]1.TypeScript数据类型定义

?TypeScript类型:

类型例子描述
number1,-33,2.5任意数字
string'hi'任意字符串
booleantrue、false布尔值true或false
字面量其本身限制变量的值就是字面量的值
any*任意类型
unknow*类型安全的any
void空值(undefined)没有值(或undefined)
never没有值不能是任何值
object{name:"孙悟空"}任意的js对象
array[1,2,3]任意的js数组
tuple[4,5]元素,TS新增类型,固定长度数组
enumenum{A,B}枚举,TS新增类型

number string boolean ang 类型

let num:number = 0

let str:string = "word"

let flag:boolean = true

let res:any = num || str || flag //可以是任意类型

/* 字面量  也就是用字面量进行类型声明 */

let a : 10

a = 10 // a = 20报错 字面量有点类似 const

/* 我们也可以这么使用 */

let b : "aa" | "bb" //用 | 线来连接多个类型

b = "aa"

b = "bb"

let c : boolean | string 

c = false

c = "str" //这些都是字面量的写法

any和unknow的区别

let res:any = 100

let ref:unknown = 100

let str:string;

str = res 
/* 
  我们打印str = 100
  因为res的类型是 any 所以赋值给 string 类型的 str 不会报错
  这里我们会发现 any 赋值避开了 类型检查  所以不建议用 any
  尽量去使用unknow
*/

//str = ref
/* 
  str = ref //这里会报错  
  因为ref的类型是 unknown 但是 str 的类型是 any 所以会报错
*/
if (typeof ref ==="string") { // 第一种写法 
  str = ref //如果想赋值我们可以先确定类型再去赋值 就不会报错
}

str = ref as string //第二种写法  类型断言 可以用来告诉解析器变量的实际类型

str = <string> ref
/* 
* 语法:
*     变量 as 类型
*     <类型> 变量
* 当你定义一个变量的时候  能用unknown 尽量不要用 any
*/

?void 类型和 never

/* 
  void 就是没有值 或 空值 
  在ts中如果函数有返回值  我们需要给函数的返回值定义类型  例如fn
  如果没有返回值  我们就需要写 void 表示函数没有返回值    例如fn1
*/ 

function fn():string{
  return "小米"
}

function fn1():void{
  console.log("小米");
}

/* 
  never 就是没有值
  js中没有值的情况  我们可以抛出一个错误
  never 很少用到  我们了解一下即可
*/

function fn2():never{
  throw new Error("错误");
}

?Object 类型、?Array 、?tuple 、?enum

//对象

let a: object; //这么写没有任何意义 因为js万物皆对象 

let b: { name: string, age?: 18 }

b = { name: "小米" }

/* 
  如果 b 定义了 age 属性 但是 b 不写 age 属性会报错
  所以我们需要在 age 后面加一个 ? 来表示 age 是可选的
*/

let c: { name: string, [propName: string]: any }
/* 
  propName 这里指的是属性名 命名无所谓  也可以用 xxx 代替 propName
  propName: string  这里的 string 指的是对象属性名为 string类型
  :any 这里指的是 对象的值可以为任意类型 也可定义为 number ,
  如果定义 number 则对象除了 name 之外的值全部为 number 属性 
*/
c = { name: "xiaomi", age: 18, gender: "男" }

//例如 :

let d: { name: string, [propName: string]: number | string | boolean }

d = { name: "xiaomi", age: 18, gender: "男", flag: false }

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

let fn: (a: number, b: number) => number

fn = function (a: number, b: number): number {
  return a + b
}

//数组

let e: string[]

e = ["1", "2", "3"]

let f: Array<number>

f = [1, 2, 3]

// 元组  
let g: [string, number]

g = ["a", 1]

// 枚举
// 枚举的默认值从 0 开始
enum Gender { male, female }

console.log(Gender); //打印结果 { '0': 'male', '1': 'female', male: 0, female: 1 }

/* 
  在开发过程中 我们如果给后端传 男 或者 传 女 一般都用 0 或者 1 表示
  下面是枚举的一个用法
*/

let i: {name:string , gender:Gender}

i = {
  name:"孙悟空",
  gender:Gender.male
}

console.log(i); //打印结果 { name: '孙悟空', gender: 0 }

enum User { a = "小红", b = "小明" }

console.log(User);//打印结果 { a: '小红', b: '小明' }

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 11:41:41  更:2021-10-15 11:42:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 19:14:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计