当前位置:网站首页>TypeScript学习1——数据类型
TypeScript学习1——数据类型
2022-07-25 14:59:00 【盖玥希圈外男友(섭소우)】
说明
本文学习自掘金大神的文章https://juejin.cn/post/7003171767560716302,原作者是伟大的兔神。
JavaScript内置类型
// number
let n:number=1;
// string
let s:string="str";
// boolean
let b:boolean=true;
// undefined
let u:undefined=undefined;
// null
let ne:null=null;
// object
let obj:object={};
// bigint
let bi:bigint=10n;
// symbol
let sy:symbol=Symbol("mySymbol");Array
两种定义方式:
// 定义方式1
let arr1:string[]={'你好','hello'};
// 定义方式2
let arr2:Array<string>={'你好','hello'};Tuple
// 元组可以定义不同元素类型的数组
let t:[string,number,boolean]=['hello',522,false];元组规定了数组的长度和元素类型,类型或长度不匹配均会报错。对于不确定类型和长度的数组,可以用any[]来定义。
undefined和null
默认情况下,null和undefined是所有类型的子类型。也就是说,可以把undefined和null赋给任意类型的变量。
let m:number=2;
m=undefined;void
void表示没有任何类型。声明变量为void是没有意义的,只会在函数没有返回值时声明为void。
注意,没有返回值的函数将得到undefined,但仍然要声明为void,否则会报错。
unknown和any
any会跳过类型检查器对值的检查,任何值都可以赋值给any类型。
let a: any = 123;
a = '456';
a = false;unknown可以实现同样的效果。
let a: unknown = 123;
a = '456';
a = false;其最大区别是,任何类型的值可以赋值给any,同时any类型的值也可以赋值给任何类型;但对于unknown ,任何类型的值都可以赋值给它,但它只能赋值给unknown和any。
let a: unknown = 123;
let b: any = 123;
let c: number = 123;
// c = a;//报错
// a = c;//可以
// b = c;//可以
c = b;//可以在对unknown类型执行操作之前,必须对其进行范围的缩小。
let obj: unknown = {
x: 1,
}
// console.log(obj.getX());//报错
// 1、使用typeof
if (typeof obj === 'object' && obj !== null) {
console.log(obj.toString());
}
// 2、类型断言
console.log((obj as object).toString())never
never表示永远不存在的值的类型,分两种情况:函数执行过程中抛出异常,因此永远不会有返回值;函数体内是死循环,永远不会有返回值。
// 抛出异常
function tErr(): never {
throw new Error('error');
}
// 死循环
function noRes(): never {
while (true);
}never与其他类型联合后,将没有never。
// type t = string | number
type t = string | number | never类型断言
类似于类型转换。
let str: any = "hello";
// 1、括号语法
let l: number = (<string>str).length;
// 2、as语法
let l2: number = (str as string).length;类型推论
没有指定变量类型时,TS会自动推断出具体的类型。
let s = 'hello';
// s = 123;//报错,因为上面s被推断为string类型
let temp;
temp = 'hello';
temp = 1;//可以,因为在最上面temp被推断为any类型联合类型
类型取值为多种类型中的一种。
let a: string | number = 'hello';
a = 123;交叉类型
将多个类型合并为一个类型,把现有的多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性。
interface IA {
name: string
age: number
}
interface IB {
name: string
id: number
}
// 需要包含IA和IB的所有属性
let a: IA & IB = {
name: 'Jack',
age: 11,
id: 1
}a既是IA类型,也是IB类型。
边栏推荐
- 41 picture background synthesis - colorful navigation map
- Gonzalez Digital Image Processing Chapter 1 Introduction
- Dpkg package download addresses of various platforms (including arm64)
- [comprehensive pen test] difficulty 4/5, classic application of line segment tree for character processing
- C#,C/S升级更新
- 微信公众号正式环境上线部署,第三方公众平台接入
- 【微信小程序】小程序宿主环境详解
- 二维数组赋初值你会几种方法?
- Fast-lio: fast and robust laser inertial odometer based on tightly coupled IEKF
- Sudo rosdep init error ROS installation problem solution
猜你喜欢
![Number of high-quality number pairs [bit operation characteristics + abstract ability evaluation + grouping fast statistics]](/img/c9/8f8f0934111f7ae8f8abd656d92f12.png)
Number of high-quality number pairs [bit operation characteristics + abstract ability evaluation + grouping fast statistics]

Browser based split screen reading

I2C device driver hierarchy

The solution to the problem that the progress bar of ros2 installation connext RMW is stuck at 13%

39 简洁版小米侧边栏练习

51 single chip microcomputer learning notes (2)

oracle_12505错误解决方法

Syntax summary of easygui

39 simple version of millet sidebar exercise

32 chrome调试工具的使用
随机推荐
[C topic] Li Kou 206. reverse the linked list
45padding不会撑开盒子的情况
When using jetty to run items, an error is reported: form too large or form too many keys
"Ask every day" briefly talk about JMM / talk about your understanding of JMM
As methods for viewing and excluding dependencies
万能通用智能JS表单验证
LeetCode_字符串_中等_151.颠倒字符串中的单词
Number of high-quality number pairs [bit operation characteristics + abstract ability evaluation + grouping fast statistics]
"Ask every day" reentrantlock locks and unlocks
Gameframework making games (II) making UI interface
阿里云技术专家邓青琳:云上跨可用区容灾和异地多活最佳实践
Sudo rosdep init error ROS installation problem solution
45padding won't open the box
bridge-nf-call-ip6tables is an unknown key异常处理
39 简洁版小米侧边栏练习
Niuke multi school E G J L
Live classroom system 05 background management system
BigDecimal rounds the data
[nuxt 3] (XI) transmission & module
[Android] recyclerview caching mechanism, is it really difficult to understand? What level of cache is it?