首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TypeScript基础——基本类型检查

为什么要使用TypeScript?...JavaScript设计之初只是为了补充Java的,在浏览器上做一些小的效果,并不是为了做大型复杂项目而开发的,js本身也是有很多缺陷的,关于为什么要用TS,小伙伴们可以瞅瞅这篇文章 :我们为什么要学习TypeScript...基本类型检查 1. 如何进行类型约束 类型约束其实很简单,只需要在变量、函数参数、函数返回值位置上加上:类型就可以了。...:表示任意类型,对该类型,TS不进行类型检查 看到这,我想大家已经知道TS有非常强大的类型检查系统,那么有个小问题 灵魂一问: 请问手机号应该定义成数字还是数字字符串?...tupleType:[string,number]; //第一项必须为字符串,第二项必须为数字,只能有两项,否则报错 tupleType = ["法医",5]; any类型:any类型可以绕过类型检查

1.3K10

实现TypeScript运行时类型检查

中的类型TypeScript 在设计之初便以兼容JavaScript 为原则, 所以JSON 也可以直接转换为TypeScript 中的类型.比如有以下JSON 数据:{ "gender": 0}该..., 那么便有可能导致严重的业务逻辑缺陷.根本原因在于, TypeScript 不会对数据的类型进行运行时的检验, TypeScript 的类型基本上只存在于编译时.这是众多BUG 的源头, 想以下以下场景...TypeScript 的运行时类型检查.io-ts 使用的是组合子(combinator)作为抽象模型, 这与大部分validator generator有本质上的区别.本文会着重带领读者实现io-ts...:interface Parser { parse: (i: I) => Either;}TypeScript 的类型系统由于我们的最终目标是实现于TypeScript 类型系统一一对应的类型检查..., 所以我们先理一理TypeScript 类型系统的(部分)基本机制.首先是TypeScript 的primitive 类型:type Primitive = number | string | boolean

2.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TypeScript抽象类

    在 TypeScript 中,抽象类是一种特殊的类,它用于作为其他类的基类,但不能直接实例化。抽象类提供了一种定义通用属性和方法的方式,而具体的实现由其派生类完成。...定义抽象类在 TypeScript 中,可以使用 abstract 关键字来定义抽象类。抽象类可以包含抽象方法和具体的方法实现。...使用抽象类抽象类不能直接实例化,只能被其派生类继承和实现。class Dog extends Animal { makeSound(): void { console.log("Woof!...在上面的例子中,Dog 类继承了抽象类 Animal,并实现了抽象方法 makeSound()。...通过创建 Dog 类的实例,我们可以调用抽象类中的具体方法 move(),以及实现的抽象方法 makeSound()。抽象属性除了抽象方法,抽象类还可以包含抽象属性。抽象属性必须在派生类中实现。

    38420

    TypeScript-类存取器 和 TypeScript-抽象类

    _age; }}let p = new Person();p.age = 18;// 如下代码本质类同:p.age(-6);// p.age = -6;console.log(p.age);抽象类概述抽象类是专门用于定义那些不希望被外界直接创建的类的抽象类一般用于定义基类抽象类和接口一样用于约束子类首先来看看没有抽象类的实现写法...,在 TypeScript-类方法修饰符 章节当中我已经编写过了,这里就不在编写了,就直接开始看抽象类即可错误示例:图片abstract class Person { abstract name:...'; say(): void { console.log(`我的名字是${this.name}`); }}let stu = new Student();stu.say();抽象类和接口的区别接口中只能定义约束..., 不能定义具体实现而抽象类中既可以定义约束, 又可以定义具体实现图片abstract class Person { abstract name: string; abstract say(

    19020

    TypeScript-字面量类型和TypeScript-可辨识联合、可辨识联合完整性检查

    字面量概述字面量就是源代码中一个 固定的值例如数值字面量: 1, 2, 3, ...例如字符串字面量: 'a', 'abc', ...在 TS 中我们可以把字面量作为具体的类型来使用:当使用字面量作为具体类型时..., 该类型的取值就必须是该字面量的值type MyNum = 1;let value1: MyNum = 1;let value2: MyNum = 2;如上的代码在编译器当中 let value2:...MyNum = 2; 是报错的,取值就必须是该字面量的值可辨识联合概述具有共同的 可辨识特征一个类型别名, 包含了具有共同的 可辨识特征 的类型的 联合关于什么是共同的可辨识特征如下:// 正方形interface...Math.PI * s.radius ** 2; }}如上代码中的 Shape 就是一个 可辨识联合:因为: 它的取值是一个 联合因为: 这个联合的每一个取值都有一个共同的 可辨识特征可辨识联合完整性检查在企业开发中..., 如果想对可辨识联合的完整性进行检查, 主要有两种实现方式分别如下方式一给函数添加返回值 + 开启 strictNullChecks如果实现的不完整在编译器当中是会进行报错的:图片// 正方形interface

    28220

    TypeScript与Babel、webpack的关系以及IDE对TS的类型检查

    只要接触过ts的前端同学都能回答出ts是js超集,它具备静态类型分析,能够根据类型在静态代码的解析过程中对ts代码进行类型检查,从而在保证类型的一致性。...带着这个问题,我们由浅入深,逐步介绍TypeScript、Babel以及我们日常使用IDE进行ts文件类型检查的关系,让你今后面对基于ts的工程能够做到游刃有余。...这就是为什么许多人将 Typescript 类型检查分到一个单独的进程。然而,Babel + TypeScript 组合仍然提供更快的编译,这要归功于 Babel 的高级缓存和单文件发射架构。...为什么类型检查失效了?还记得我们前面提到的babel怎么处理ts的? Babel 如何处理 TypeScript 代码?它删除它。...babel部分的处理,根类型没有根本的关系,而类型检查使用到的tsconfig和tsc则只作用在类型检查的部分,根ts代码编译没有任何关系。

    72930

    Nuxt3 实战 (四):安装 Nuxt UI 和配置 Typescript 类型检查

    Element-Plus,但感觉这两款组件库太偏向业务风格了,现在项目的搭建最好能偏年轻化一点,最后还是选择了:Nuxt UI,主要是 Nuxt UI 是 Nuxt 官方推荐的,而且完美兼容 Nuxt,并且是用 TypeScript...编写的,并为所有组件和可组合函数提供类型。...tailwindcss 的类名都生效了:如果你遇到 icon 类似的错误,你应该还需要安装 @iconify-json/heroicons 这个库pnpm add @iconify-json/heroicons配置 TypeScript...1、 安装依赖pnpm add -D vue-tsc@^1 typescript 2、 添加到 nuxt.config 配置中 export default defineNuxtConfig({...// 构建时启动类型检查 typescript: { typeCheck: true } })总结到这里,我们的准备工作就完成了,可以在页面组件中使用 Nuxt UI 的组件,后续就可以着手开发页面

    66210

    TypeScript 基础类型

    TypeScript 基础类型 TypeScript 包含的数据类型如下表: 数据类型 关键字 描述 任意类型 any 声明为 any 的变量可以赋予任意类型的值。...**注意:**TypeScript 和 JavaScript 没有整数类型。...---- Any 类型 任意值是 TypeScript 针对编程时类型不明确的变量使用的一种数据类型,它常用于以下三种情况。...1、变量的值会动态改变时,比如来自用户的输入,任意值类型可以让这些变量跳过编译阶段的类型检查,示例代码如下: let x: any = 1; // 数字类型 x = 'I am who I am'...; // 字符串类型 x = false; // 布尔类型 改写现有代码时,任意值允许在编译时可选择地包含或移除类型检查,示例代码如下: let x: any = 4; x.ifItExists

    62710

    TypeScript类型守卫

    类型守卫在前几篇介绍了断言,在使用断言时我们已经确定了变量的类型,确定该类型时一定存在(否则则会欺骗编译,运行时报错),那么为什么还要类型守卫呢?...因为类型断言还是需要借助类型守卫的,类型守卫主要是用来判断未知类型是不是所需要的类型。...这种写法称作类型谓词,使用类型谓词的函数称为类型谓词函数,该函数的返回值必须的boolean类型。...(1)函数参数形式函数中的参数类型为多个类型,通过is关键字自定义类型,将函数参数精确到某种类型,然后再执行相应的逻辑。...Teacher | Student) => { if(isTeacher(cls)) { return cls.courses; }}(2)this形式下面代码中的 User 是抽象类

    56330

    【TypeScript】类型声明

    当我们使用TypeScript编写代码时,类型声明是非常重要的,它帮助我们定义变量、函数、类等的类型,从而提供更好的代码提示、类型检查和代码可读性。...以下是关于TypeScript类型声明的详细内容:基本类型声明在TypeScript中,我们可以使用以下关键字来声明基本类型:let num: number = 42;let str: string =...(Type Assertion)类型断言允许我们手动指定变量的类型,并告诉TypeScript编译器我们知道更多关于变量的类型信息。...: number; readonly id: number;}以上是关于TypeScript类型声明的一些重要内容。通过合理使用类型声明,我们可以增强代码的可读性、类型安全性和可维护性。...类型声明是TypeScript的核心特性之一,可以帮助我们构建更健壮的代码和应用程序。我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

    29420

    TypeScript交叉类型&联合类型

    一、交叉类型(Intersection types)什么事交叉类型呢?简单来说就是通过&符号将多个类型进行合并成一个类型,然后用type来声明新生成的类型。...这里分两种情况,如果同名属性的类型相同则合并后还是原本类型,如果类型不同,则合并后类型为never2.基本数据类型交叉any和number交叉结果是any类型,any和boolean交叉结果是any类型...,如下图所示:3.2 键的类型是对象类型A、B、C三个类型都有相同的键inner,但是键的数据类型不同,分别是D、E、F,此时A&B&C会将inner键的类型进行合并,其实是D、E、F的交叉类型。...,当键的类型是不同的字面量类型,则交叉后类型为never类型。...二、联合类型(Union types)联合类型和交叉类型比较相似,联合类型通过|符号连接多个类型从而生成新的类型。它主要是取多个类型的交集,即多个类型共有的类型才是联合类型最终的类型。

    70410
    领券