TypeScript学习2、TS数据类型

1、布尔类型。

let bool: boolean;
bool = false;

2、数值类型(包括浮点型, 二进制 八进制 十六进制数值))。

let num: number = 1.2;
let num1: number = NaN;
let num2: number = Infinity;
let num3: number = 1111101000; // 二进制
let num4: number = 3e8; // 16进制

3、字符串类型。

let str: string;
str = '123456789';
str = `数值是${num}`;

4、数组类型。
写法一

let arr: number[];
arr = [1,2,0];

写法二

let arr2: Array<number>;
arr2 = [1,2,0];

联合类型数组

let arr3: (string | number)[] or let arr3: Array<string | number>;
arr3 = [1,2,'0'];

5、元组类型:和数组类似,但是元组中的数据类型顺序、长度必须和规定的类型顺序、长度对应起来。

let tuple: [string, number, boolean];
tuple = ['1', 2, true];

6、枚举类型:一个枚举可以包含零个或多个枚举成员,枚举成员具有一个数字值,它可以是常数或计算得出的值,如果没有初始化就会被当作常数,这是第一项为0,其余为前一项加一。

enum CarStatus{
    ON_lINE,
    OUT_LINE = 2,
    WARNING
}
console.log(CarStatus.WARNING)

7、any类型:任意类型。

let cy: any;
cy = false;
cy = 'dsadsa';
cy = [1,2,2,'fdfsd']
let arr4 : Array<any> = [1,2,'ddd']
let arr5 : any[] = [1,2,'ddd']

8、void类型:什么类型都不是,可以赋值undefined 和 null。

const playFun = (str: string): void =>{
    console.log(str)
}
playFun("1")
let v: void = undefined;
let v1: void = null; // 在关闭严格模式下才启作用否则报错

9、null和undefined:在关闭严格模式下null和undefined类型是其他类型的子类型。

let n1: null;
n1 = null;
let n2: undefined;
n2 = undefined;

10、never类型:表示永远不存在的值,never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。

一、抛出异常的情况是never类型。

function error(message: string): never {
    throw new Error(message);
}

二、无线循环也是never类型。

function loop(): never {
    while (true) {}
}

11、object对象。

let obj = {
    name: 'dddd'
}
let obj2 = obj;
obj2.name = 'aaaa';
console.log(obj)
function getObj(obj: object): void{
    console.log(obj)
}
getObj(obj)

12、类型断言:将一个联合类型的变量指定为一个更加具体的类型,<string>str 或者 str as string 在JSX语法中只能使用(str as string)这种方式。
下面看一个例子...

const getLength = (str: string | number): number => {
    if (str.length || str.length === 0) {
        return str.length
    } else {
        return str.toString().length
    }
}
//ERROR in basic-type.ts(90,20)TS2339: Property 'length' does not exist on type 'string | number'.Property 'length' does not exist on type 'number'.

上例中,获取 str.length 的时候会报错。此时可以使用类型断言,将 str断言成 string:

const getLength1 = (str: string | number): number => {
    if ((str as string).length || (str as string).length === 0) {
        return (str as string).length
    } else {
        return str.toString().length
    }
}
console.log(getLength1('hello')) //5
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343