一次性搞定TS原始类型和对象类型

前言


🫥Typescript是什么?我们往往直接会答出来,是JS的超集合,经历了多次失败的Typescript的学习,我认为,应该重新审视一下Typescript,我认为应该单独的把Typescript看成一门语言来学习,如果一直陷入JS的世界里面很多内容我们会难以精准把控。

一.原始数据类型


🥱如果你熟悉Java,你会知道Java有八大基本数据类型,当然Typescript中也有8种原始基本类型,他们分别是

接下来我们一一来解释不同数据类型的使用方法。

  1. null:表示的是有值但是是一个空值,快递盒子里面装的是礼物,但是礼物是一个小的空礼物盒。
  2. string:就是我们常见的JavaScript中的字符串,等价于JS中的字符串。
  3. number:等价于JavaScript中的number类型。
  4. boolean:等价于JavaScript中的布尔类型。
  5. undefined:表示的是没有值,仅仅有一个空的快递盒子。
  6. object:非常通用的类型,它可以表示任何对象,包括普通对象、数组、函数等等。但需要注意的是,不包括原始类型(如 number、string、boolean、null、undefined)
js 复制代码
let obj: object;

obj = {}; // 可以赋值为一个空对象
obj = { name: 'John', age: 25 }; // 可以赋值为一个具有 name 和 age 属性的对象
obj = [1, 2, 3]; // 可以赋值为一个数组
obj = () => { console.log('Hello, World!'); }; // 可以赋值为一个函数

// 以下是一些不合法的赋值

obj = 42; // 不可以赋值为一个数字
obj = 'hello'; // 不可以赋值为一个字符串
obj = true; // 不可以赋值为一个布尔值
obj = null; // 不可以赋值为 null
obj = undefined; // 不可以赋值为 undefined
  1. symbol:等价于JavaScript中的symbol用法如下
js 复制代码
const sys:symbol = Symbol()
const sys2:symbol = Symbol("description")

console.log(sys === sys2) // 每个symbol都是唯一的
  1. bigInt:用来存储比number类型更大的数据,使用方法如下
js 复制代码
let bigIntNum: bigint;

bigIntNum = BigInt(123456789); // 使用 BigInt() 函数将数字转换为 bigint
bigIntNum = 987654321n; // 使用字面量语法直接赋值 bigint

二.其他常用类型


🫥数组类型:数组的使用在Typescript中使用方法和JS中一样,它可以使用两种方式进行类型标注。

js 复制代码
let array:Array<string> = ['a','b','c'] // 使用泛型的方式

let array:string[] = ['a','b','c'] // 常用方式

🥱元组类型:在Python中有元组的类型这个类型在JS目前还没有,但是在Typescript中也有元组的概念,我们可以简单的理解为定长的只读数组,并且允许存储不同数据类型。

js 复制代码
let tupleData:[string,boolean,number] = ['a',true,2]

元组除了这种使用方式还有具名元组

js 复制代码
let nameTuple:[name:string,age:number] = ['a',12]

三.认识interface和type


😎interface被翻译为接口,在Java中interface是用来定义类的行为和规范的,在Typescript中interface可以用来定义类的行为和规范还可以用来规定对象的结构,简单理解,无论是类还是对象都要符合接口的定义,如果不符合对应规范就会报错。

js 复制代码
interface Animal{
    name?:string // 可选
    readonly age:number // 只读
    printInformation():void
}

// 定义了一个类
class Dog implements Animal{
    name:string
    age:number
    constructor(name:string,age:number){
        this.name = name
        this.age = age
    }
    printInformation(){
        console.log(this.name+this.age)
    }
}
// 定义了一个对象
const cat:Animal = {
    name:"huahua",
    age:12,
    printInformation:():void=>{
        console.log("cute")
    }
}

🫥type被称为类型别名,使用非常的简单,基本用法如下:

js 复制代码
type unionType = 1|2|3|4|5|6|7|8|9
type exampleType = unionType
let data:exampleType = 2

四.特殊标识void


👹可能很多人第一次见到这个修饰符应该是在Java中,在Java中void表示的是这个方法没有返回值,是的在Typescript中作用也是这样的,主要表示的是方法没有返回值。

js 复制代码
public class Example {
    public static void sayHello() {
        System.out.println("Hello!");
    }

    public static void main(String[] args) {
        sayHello(); // 输出: "Hello!"
    }
}

在TS中它的用法是这样的。

js 复制代码
const cat:Animal = {
    name:"huahua",
    age:12,
    printInformation:():void=>{
        console.log("cute")
    }
}

五.object、Object 与 { }


🫥一眼看下去是不是不知道用哪个?首先给出答案,仅仅只使用objectObject是顶级对象,{}的用法和Object差不多,并且除了这些尽量避免使用一切类型的包装类型~

相关推荐
也无晴也无风雨1 小时前
深入剖析输入URL按下回车,浏览器做了什么
前端·后端·计算机网络
Martin -Tang2 小时前
Vue 3 中,ref 和 reactive的区别
前端·javascript·vue.js
FakeOccupational3 小时前
nodejs 020: React语法规则 props和state
前端·javascript·react.js
放逐者-保持本心,方可放逐4 小时前
react 组件应用
开发语言·前端·javascript·react.js·前端框架
曹天骄5 小时前
next中服务端组件共享接口数据
前端·javascript·react.js
阮少年、5 小时前
java后台生成模拟聊天截图并返回给前端
java·开发语言·前端
郝晨妤6 小时前
鸿蒙ArkTS和TS有什么区别?
前端·javascript·typescript·鸿蒙
AvatarGiser7 小时前
《ElementPlus 与 ElementUI 差异集合》Icon 图标 More 差异说明
前端·vue.js·elementui
喝旺仔la7 小时前
vue的样式知识点
前端·javascript·vue.js
别忘了微笑_cuicui7 小时前
elementUI中2个日期组件实现开始时间、结束时间(禁用日期面板、控制开始时间不能超过结束时间的时分秒)实现方案
前端·javascript·elementui