美文网首页js css html
2023.10 TS学习-基础类型

2023.10 TS学习-基础类型

作者: wo不是黄蓉 | 来源:发表于2023-02-27 16:40 被阅读0次

大家好,我是wo不是黄蓉,今年学习目标从源码共读开始,希望能跟着若川大佬学习源码的思路学到更多的东西。

开始使用ts的第一步好难啊,用到一半每次都想放弃,经常会出现一些不知所以的错误提示,然后就没有解决的思路,从今天开始学习ts

ts学习

准备ts环境,npm i -g typescript

tsc --init初始化一个ts配置文件

tsc .\src\demo.tsdemo.ts编译为demo.js

类型

类型和接口有啥区别


//类
class Student {
  fullName: string
  //类和接口配合使用构造函数里的参数不加public为啥会报错?
  constructor(firstName: string, age: number, public lastName: string) {
    this.fullName = firstName + " " + " " + lastName + "," + age + "years old"
  }
}

//类型注释
interface Person {
  firstName: string
  lastName: string
}

function greeter(person: Person) {
  return "Hello, " + person.firstName + " " + person.lastName
}

let user = new Student("Jane", 18, "User")

document.body.innerHTML = greeter(user)
1677244503909.png

基础类型

booleannumberstring

定义数组的两种方式

其他基础类型应该比这个更简单就不举例了


//定义数组
interface Status {
  label: string
  value: number
}
//方式一
let statusOptions: Status[] = [
  { label: "已过期", value: -1 },
  { label: "生效中", value: 1 },
]
//方式二
let statusList: Array<Status> = [
  { label: "已过期", value: -1 },
  { label: "生效中", value: 1 },
]
元组

和数组的区别:可以定义不同的类型(混合),数组约定只有一种类型


//元组,定义的数组项的类型可以不一致
let x: [string, number]
x = ["hello", 1]

官方给的例子:


x[3] = 'world'; // OK, 字符串可以赋值给(string | number)类型

console.log(x[5].toString()); // OK, 'string' 和 'number' 都有 toString

x[6] = true; // Error, 布尔不是(string | number)类型

我给越界的数组赋值,显示的结果是编译不通过,应该是不可以扩展数组的元素的,相当于一开始就规定了数组的长度,以及类型,以及数组元素类型的顺序


//给越界的数组赋值
x[3] = "world"
x[3] = true

1)编译会报错,不能给越界的数组赋值

1677245978357.png

2)ts提示报错,赋值元素只能是元组可接收的值类型

1677309419992.png
枚举

类似于键值对,可以手动指定成员的数值,相当于一个双向绑定的映射,我知道red可以找到1,我知道1可以找到red


//枚举
enum Color {
  Red = 1,
  Green,
  Blue,
}
  //查找值
let c: Color = Color.Green

//查找值的name
let colorName: string = Color[2]

console.log(colorName) // 显示'Green'因为上面代码里它的值是2

返回的是Green,不太清楚这边定义的默认值的意思是啥,枚举里面也没有给其赋值默认值解答:因为第一个如果给赋值了,后面自动进行递增

any

不确定的类型,定义为不确定的类型可以赋值为不同的类型


let a: any = 4
a = "hello"

定义为any类型,可以随意访问属性和方法无论是真的已经定义过的还是没定义的,和object的区别,即便object上存在有该方法也不能访问


let b: any = 4
b.toFixed()
let c: Object = 4
c.toFixed()
1677315410095.png

混合类型的数组


let arr: any[] = [1, "hello", true]
void

通常函数没有返回值是定义为void


function printPerson(person: Person): void {
  console.log("Hello, " + person.firstName + " " + person.lastName)
}

void类型的变量,只能赋值为undefinednull,试过定义为null也会提示,但是编译不会报错,但是赋值为number类型的会编译报错


let d: void = 1
let e: void = undefined
let f: void = null
1677315655808.png 1677316466881.png
null和undefined

默认情况下nullundefined是所有类型的子类,可以把nullundefined赋值给number类型的变量


//编译不会报错
let a: null = undefined
let b: undefined = undefined

指定--strictNullChecks标记,编译会报错,只能赋值给各自的类型

1677317322993.png
never

表示一定不会是某种类型

object

和js的object理解一样

类型断言

相当于告诉编译器给我留个后门,我知道这个东西到底是什么,请不要质疑我的判断。

官方的一句解释是:类型断言好比其他语言里的类型转换,但不进行特殊的数据检查和解构。它没有运行时的影响,只是在编译阶段起作用

两种方式


let a: any = "string"
//尖括号方式
let strLength: number = (<string>a).length
//as 方式
let sLen: number = (a as string).length

变量声明

var let const 讲的比较多的,不清楚的可以自己去参考官方的 更多参考

相关文章

  • 2021-01-28

    一:ts初步了解 基础类型 ts的基础类型中有如下几种:boolean/number/string/object/...

  • 白话文:几个例子马上看懂typescript基础类型

    TS入门:基础类型

  • TypeScript02--基础数据类型与接口

    基础数据类型: 1.ts的基础数据类型: ts相比js新增的数据类型:元组,any,void,neve...

  • TypeScript 07 - 类型推断

    基础 最佳通用类型 上下文类型 1. 基础 在 TS 中未明确指出类型的地方,TS 会帮助提供类型,当初始化变量和...

  • TypeScript基础入门 - 基础类型

    转载地址 TypeScript基础入门 - 基础类型 项目实践仓库 为了保证后面的学习演示需要安装下ts-node...

  • typescript 入门

    ts 是js 的超集 安装 运行 node.js 环境执行ts 类型 基础类型:Boolean、Number、St...

  • Ts基础类型

    ts运行 npm install -g typescript运行时报错image.png解决报错:输入Set-Ex...

  • ts的学习

    安装全局ts tsconfig.json文件的配置 ts基础类型 class类的练习

  • 大厂面试TS(上)

    一、TS面试基础知识 1、什么是TS? 概念:ts 是 js 的超集,即在原有的js语法基础上,添加强类型并切换为...

  • 【TS】基础数据类型

    在了解TypeScript(简称TS)基础数据类型之前,先聊聊类型的“强弱动静”之分。 TS是JS的超集,JS是一...

网友评论

    本文标题:2023.10 TS学习-基础类型

    本文链接:https://www.haomeiwen.com/subject/zhahldtx.html