当前位置 博文首页 > jcLee95的博客:TypeScript笔记(5)—— 基本数据类型
CSDN:jcLee95
邮箱:291148484@163.com
专题目录:https://blog.csdn.net/qq_28550263/category_10960049.html
【思维导图】:
let
关键字JavaScript中使用关键字var来声明变量有很多的缺陷,首先一个就是var作用域的问题。比如:
for (var i = 0; i < 5; i++) {
console.log('for循环内,迭代变量i=' + i)
}
console.log('for循环外:,迭代变量i=' + i)
可想而知,由于使用var声明的变量作用域比较宽松,在for语句等一些语句中,由var声明的变量可能受到外部的干扰而导致运行到非预期的结果。
var在同一区域可以使用相同标识符来声明变量:
var a = 1;
var a = "happy"
这也将无意间导致后面可能用到的变量被覆盖。
由于种种缺陷,于是let
应运而生。let声明的变量只在块级有效,并且在一个快中只允许用let声明一个相同标识符的变量。并且如果区块中存在let声明,这个区块对这些命令声明的变量凡是在声明之前就使用他们就会报错,也就是说在含有let的代码块内使用let命令声明变量之前该变量都是不可用的。这是不是很有强类型语言的特点呢?对的,就是借鉴强类型语言的功能过来的。
关于使用
var
、let
、cont
声明变量的更多区别可以参考下一篇博文:
TypeScript笔记(6):变量数据类型的补充说明中相关的内容
布尔类型是最简单的一种类型,其对象可以被赋予文字值true或者false,对应着真与假或者数字电路中的0或1等等。在JavaScript和TypeScript中布尔类型被叫做boolean
:
let isRight: boolean = false;
Boolean 对象方法
方法 | 描述 |
---|---|
valueOf() | 返回 Boolean 对象的原始值。 |
【例1】valueOf()方法:
(function(){
let isRight: boolean = false;
console.log(isRight.valueOf())
})();
Out[]:
flase
这也是来自原生JavaScript的基本类型,不像C、Java等语言数字类型可以分为整形、浮点型等等很多个类型,TypeScript里的所有数字都是浮点数,即TypeScript只有浮点类型用以表示数字,因此数字类型number
与浮点类型等概念。 除了支持十进制和十六进制字面量,TypeScript还支持ECMAScript 2015中引入的二进制和八进制字面量,比如:
let binaryLiteral: number = 0b1010; // 二进制数
let decLiteral: number = 3.14; // 十进制数
let octalLiteral: number = 0o744; // 八进制数
let hexLiteral: number = 0xf00d; // 十六进制数
在TypeScript(或JavaScript)中,字符串类型String
用以表示字符串,与C++、Java等语言不一样,这里即可以使用双引号( "
)来表示字符串,也可以使用单引号('
)表示字符串,因为在TypeScript中,是没有单独的字符类型的,字符只不过是视作只有一个字符的字符串,如:
let a: string = "王者荣耀"; // a 为String类型变量
character = '典韦'; // 给变量character赋值为'典韦'
模板字符串
模版字符串它可以定义多行文本和内嵌表达式, 这种字符串是被反引号包围,并且以${ expr }
这种形式嵌入表达式
let name: string = `Trump`;
let age: number = 72;
let sentence: string = `Hello, my name is ${ name }.
I'll be ${ age + 1 } years old next month.`;
这与下面定义sentence
的方式效果相同:
let sentence: string = "Hello, my name is " + name + ".\n\n" +
"I'll be " + (age + 1) + " years old next month.";
String 对象属性
属性 | 描述 |
---|---|
constructor | 对创建该对象的函数的引用 |
length | 字符串的长度 |
【例1】String 对象属性:
(function(){
let a: string = "你好,欢迎来到TypeScript的世界!";
console.log(a.constructor);
console.log(a.length);
if(a.constructor==String){
console.log("s是一个字符串")
};
})();
Out[]:
? String() { [native code] }
21
s是一个字符串
String 对象方法
方法 | 描述 | 说明 |
---|---|---|
charAt() | 返回在指定位置的字符 | |
charCodeAt() | 返回在指定的位置的字符的 Unicode 编码 | |
concat() | 连接字符串 | |
indexOf() | 检索字符串,若指定子字符串出现则返回其第一次出现时首字母在原字符串中的位置 | 如果要检索的子字符串值没有出现,则该方法返回 -1 |
lastIndexOf() | 从后向前搜索字符串,若指定子字符串出现则返回其第一次出现时首字母在原字符串中的位置 | 如果要检索的子字符串值没有出现,则该方法返回 -1 |
localeCompare(target) | 用本地特定的顺序来比较两个字符串 | target 要以本地特定的顺序与 stringObject 进行比较的字符串。 返回说明比较结果的数字: - 如果 stringObject 小于 target, 则 localeCompare() 返回小于 0 的数; - 如果 stringObject 大于 target, 则该方法返回大于 0 的数。 - 如果两个字符串相等,或根据本地排序规则没有区别, 该方法返回 0。 |
match() | 找到一个或多个正则表达式的匹配 | 返回存放匹配结果的数组,若无匹配结果则返回null。 如果匹配的是正则表达式且其具有标志 g,则 match() 方法将执行全局检索,否则 match()只匹配一次。 |
replace() | 替换与正则表达式匹配的子串 | 如果匹配的是正则表达式且其具有标志 g,则 replace() 方法将执行全局替换,否则只替换一次 |
search() | 检索与正则表达式相匹配的值 | 如果没有找到任何匹配的子串,则返回 -1; 否则返回第一个与 正则表达式 相匹配的子串的起始位置。 |
slice() | 提取字符串的片断,并在新的字符串中返回被提取的部分 | |
split() | 把字符串分割为字符串数组 | |
toLocaleLowerCase() | 把字符串转换为小写 | |
toLocaleUpperCase() | 把字符串转换为大写 | |
toLowerCase() | 把字符串转换为小写 | |
toUpperCase() | 把字符串转换为大写 | |
toString() | 返回字符串 | |
valueOf() | 返回某个字符串对象的原始值 |
【例】String 对象的方法使用示例1
(function(){
let a1: string = "你好,";
let a2: string = "TypeScript的世界欢迎来到!";
let a3: string = "我将和你一起,畅游于此...";
console.log("a1.charAt(1): "+a1.charAt(1));
console.log("a1.charCodeAt(1): "+a1.charCodeAt(1));
console.log("a1.concat(a2,a3): "+a1.concat(a2,a3));
console.log("a2.indexOf('Type'): "+a2.indexOf("Type"));
console.log("a2.lastIndexOf('界'): "+a2.lastIndexOf("界"));
console.log("'二月'.localeCompare('二月'): "+"二月".localeCompare("二月")); // 字符串完全一样
console.log("'五月'.localeCompare('七月'): "+"五月".localeCompare("七月")); // 可以识别中文数字,七月在五月之后。
console.log("'七月'.localeCompare('五月'): "+"七月".localeCompare("五月")); // 五月在七月之前。不匹配也一样为负值。
console.log("英语考试结束了后李华的心情是7 上8 下。".match(/\d+/g));
console.log("现在时间是2020年12月12日".replace(/\d{4}年(\d{2})月\d{2}日/g,"2021年4月12日"));
console.log("现在时间是2020年12月12日".search(/\d{4}年(\d{2})月\d{2}日/g)); // 返回第一个2出现的索引号
})();
Out[]:
a1.charAt(1): 好
a1.charCodeAt(1): 22909
a1.concat(a2,a3): 你好,TypeScript的世界欢迎来到!我将和你一起,畅游于此...
a2.indexOf('Type'): 0
9 a2.lastIndexOf('界'): 12
'二月'.localeCompare('二月'): 0
'五月'.localeCompare('七月'): 1
'七月'.localeCompare('五月'): -1
["7", "8"]
现在时间是2021年4月12日
5
【例】String 对象的方法使用示例2
(function(){
let a: string = "你好,欢迎来到TypeScript的世界!";
console.log(a.slice(3));
console.log(a.slice(0,2));
console.log(a.slice(7,17));
})();
Out[]:
欢迎来到TypeScript的世界!
你好
TypeScript
【例】String 对象的方法使用示例3
(function(){
let a: string = "你好,欢迎来到TypeScript的世界!";
console.log(a.split("")); // 拆分所有字符
console.log(a.split(",")); // 按指定字符进行拆分
})();
Out[]:
["你", "好", ",", "欢", "迎", "来", "到", "T", "y", "p", "e", "S", "c", "r", "i", "p", "t", "的", "世", "界", "!"]
["你好", "欢迎来到TypeScript的世界!"]
【例】String 对象的方法使用示例4
(function(){
let a: string = "I love China!";
console.log(a.toLocaleLowerCase());
console.log(a.toLocaleUpperCase());
console.log(a.toLowerCase());