首页 > 其他分享 >浅谈类型

浅谈类型

时间:2023-05-11 21:55:11浏览次数:33  
标签:变量 ts let 类型 属性 string 浅谈

-----------部分内容摘抄自《TypeScript编程》-----------------

1. any

代表不确定变量的值属于什么类型,声明它是任意类型,可以赋予任意类型的值,但这就意味着ts倒退回js了,不建议使用。如果不声明类型,默认也是any。

let testAny: any;

2. unknown

同any,代表不确定变量的值属于什么类型,声明它是unknown,可以赋予任意类型的值,但unknown比any多了一层限制,当调用变量上的方法时必须断言变量类型,否则编译器会提示错误,如果确定并非错误可以通过注释@ts-ignore告知编译器请忽略。

let testUnknown: unknown;
(testUnknown as string).toString();
// @ts-ignore
testUnknown.toString();

3. 原始值类型

boolean、number、string、symbol

4. 对象类型

当一个变量被声明为拥有某些属性的对象时,如果该变量被赋值不包含那些属性的对象,那么ts编译器将提示错误。一般情况下,直接用对象字面量初始化一个变量时,可以不用声明该变量类型,ts编译器会自动推断变量类型。

function testObjType(obj: {firstName: string, lastName: string}) {
    console.log(obj.firstName, obj.lastName);
}
testObjType({firstName: 'john', lastName: 'barrowman'});

 默认情况下,TypeScript对对象的属性要求十分严格。如果声明对象有个类型为number的属性b,TypeScript将预期对象有这么一个属性,而且只有这个属性。如果缺少b属性,或者多了其他属性,TypeScript将报错。当然,TypeScript支持声明可选属性。

/**
 * 1) a有个类型为number的属性b
 * 2)a可能有个类型为string的属性c。如果有属性c,其值可以为undefined
 * 3)a有个类型为string的只读属性d
 * 4)a可能有任意多个数字属性,其值为布尔值
 * 5) a可能有任意多个字符串属性,其值为任意值
 */
let a: {
    b: number,
    c?: string,
    readonly d: string,
    [key: number]: boolean,  // [属性名类型]: 属性值类型,key可以是其它字符串
    [key2: string]: any
} = {
    b: 123,
    d: '456'
};
a.b = 666;
a.d = '789';  // Cannot assign to 'd' because it is a read-only property.ts(2540)

5. type声明类型别名

类型声明格式上与变量声明并初始化类似…此外,与let和const一样,类型别名采用块级作用域。每一块代码和一个函数都有自己的作用域,内部的类型别名将遮盖外部的类型别名。

type Age = number;
type Person = {
    name: string,
    age: Age
};
let age = 55;
let driver: Person = {
    name: 'James May',
    age: age
}

 

标签:变量,ts,let,类型,属性,string,浅谈
From: https://www.cnblogs.com/ran2022/p/17391462.html

相关文章

  • 第三十八天 字符编码与配置文件,数据类型,约束条件
    一、数据库的分类关系型数据库 有固定的表结构、表与表之间可以建立数据库层面的关系 MySQLPostgreSQLMariaDBSQLserversqlitedb2非关系型数据库 没有固定的表结构、表与表之间没有数据库层面的关系 redismongodbmemcache二、环境变量的搭建1.环境变量2.系统服......
  • 模板元编程--TypeList算法--类型分割
    将一个数据列表按照要求尽心分割为两个类型。usinglist1=TypeList<char,double,float,longlong,int,int>;将大于4字节的分为一组,其他分为一组:贴入Fold函数,一会儿用到:template<typenameT>conceptTL=requires{typenameT::isTypeList;typenameT::ty......
  • python 类型提示
    python类型提示它允许开发者在代码中显式地声明变量、函数、方法等的类型信息。这种类型声明不会影响Python解释器的运行,它可以帮助开发人员在编写代码时更好地理解代码中的数据类型,从而提高代码的可读性和可维护性。基本类型#直接定义age:int=1#声明后定义num:flo......
  • wordpress 为自定义类型文章新增自定义字段
    wordpress强大之处在于有很强的可自定义性,使得插件、主题的开发变得及其便利。就拿我们今天要说的自定义文章添加自定义字段来说,就很便捷。        比如我们要录入一个客户信息到wordpress中,那么需要的字段可不仅仅是什么标题、内容、摘要这么简单了,我们可能需要录入客户......
  • Zookeeper中watcher介绍-通知状态事件类型
    1.ZookeeperWatcher简介1.1)提供了分布式数据发布、订阅功能。1.2)引入了watcher机制来实现这种分布式的通知功能(主要触发事件:节点创建、节点删除、节点改变等)。1.3)watcher包括以下三个过程:客户端向服务端注册watcher、服务端事件发生触发watcher、客户端回调watcher得到触发事......
  • 聊一聊redis十种数据类型及底层原理
    概述Redis是一个开源的高性能键值数据库,它支持多种数据类型,可以满足不同的业务需求。本文将介绍Redis的10种数据类型,分别是string(字符串)hash(哈希)list(列表)set(集合)zset(有序集合)stream(流)geospatial(地理)bitmap(位图)bitfield(位域)hyperloglog(基数统计)String概述string......
  • 单链表——追加函数(有无懂的大佬解答一下why不加强制类型过不去)
    #include<bits/stdc++.h>usingnamespacestd;typedefstruct{intid;stringname;}Data;typedefstruct{ DatanodeData; structNode*nextNode;}CLtype;//追加链表CLtype*CLAddEnd(CLtype*head,Datanodedata){CLtype*node,*htemp; if(!(node=(CLt......
  • 类型断言
    断言把两种能有重叠关系的数据类型进行相互转换的一种TS语法,把其中的一种数据类型转换成另外一种数据类型。类型断言和类型转换产生的效果一样,但语法格式不同。类型断言语法格式为“A数据类型的变量asB数据类型”(A数据类型和B数据类型必须具有重叠关系)。以下几种场景都......
  • PMP-4.9-1 规划采购管理-合同类型、采购管理计划、采购策略、招标文件、采购工作说明
    ##############################################################前一章,我们说到了规划采购管理的一些基础内容,本章我们对采购过程中的一些具体文件内容做说明。这里强调一下,本次内容依旧是买方视角的采购管理流程,也就是甲方的视角。如需乙方视角,可留言评论,需求足够的话,我们再......
  • [oeasy]python0050_动态类型_静态类型_编译_运行
    动态类型_静态类型回忆上次内容上次了解了帮助文档的生成开头的三引号注释可以生成帮助文档文档可以写成网页 python3本身也有在线的帮助手册 目前的程序提高了可读性 ​ 添加图片注释,不超过140字(可选......