数据类型
// ***** 基本数据类型 ******
let x: any = 1; // 动态类型类似dart的dynamic
let binaryLiteral: number = 0b1010; // 二进制
let octalLiteral: number = 0o744; // 八进制
let decLiteral: number = 6; // 十进制
let hexLiteral: number = 0xf00d; // 十六进制
let name: string = "Runoob";
let flag: boolean = true;
let arr: number[] = [1, 2];
let arr: Array<number> = [1, 2];
let x: [string, number] = ['Runoob', 1];
enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
function hello(): void {
alert("Hello Runoob");
}
- 注意:Null 和 Undefine用法
// 启用 --strictNullChecks
let y: number;
y = 1; // 编译正确
y = null; // 编译失败
y = undefined; //编译失败
// 如果一个类型可能出现 null 或 undefined, 可以用 | 来支持多种类型
let x: number | null | undefined;
x = 1; // 编译正确
x = undefined; // 编译正确
x = null; // 编译正确
变量作用域
var global_num = 12 // 全局变量
class Numbers {
num_val = 13; // 实例变量
static sval = 10; // 静态变量
storeNum():void {
var local_num = 14; // 局部变量
}
}
console.log("全局变量为: "+global_num)
console.log(Numbers.sval) // 静态变量
var obj = new Numbers();
console.log("实例变量: "+obj.num_val)
条件判断
- if...else if...else
var num = 2;
if (num > 0) {
console.log(num + " 是正数");
}
else if (num < 0) {
console.log(num + " 是负数");
}
else {
console.log(num + " 不是正数也不是负数");
}
- switch...case
switch(expression) {
case constant-expression :
statement(s);
break; /* 可选的 */
case constant-expression :
statement(s);
break; /* 可选的 */
/* 您可以有任意数量的 case 语句 */
default : /* 可选的 */
statement(s);
}
循环
- for
for (var val in list) {
//语句
}
- for...in
var j:any;
var n:any = "a b c"
for(j in n) {
console.log(n[j])
}
- for...of 在 ES6 中引入的 for...of 循环,以替代 for...in 和 forEach()
for...of 允许你遍历 Arrays(数组), Strings(字符串), Maps(映射), Sets(集合)等可迭代的数据结构等。
let someArray = [1, "string", false];
for (let entry of someArray) {
console.log(entry); // 1, "string", false
}
- forEach
// 简单的遍历数组
let list = [4, 5, 6];
list.forEach((val, idx, array) => {
// val: 当前值
// idx:当前index
// array: Array
});
- every
let list = [4, 5, 6];
// 判定list数组中的元素是否都大于等于4
let result = list.every((val, idx, array) => {
// val: 当前值
// idx:当前index
// array: Array
return val >= 4;
});
- some
let list = [4, 5, 6];
// 判定list数组中的元素是否存在大于等于5的元素
let result = list.every((val, idx, array) => {
// val: 当前值
// idx:当前index
// array: Array
return val >= 5;
});
- while
// 输出 5 然后程序执行结束
var i:number = 1
while(i<=10) {
if (i % 5 == 0) {
console.log ("在 1~10 之间第一个被 5 整除的数为 : "+i)
break // 找到一个后退出循环
}
i++
}
- do...while
// 先执行循环体,再判断条件
do
{
statement(s);
} while( condition );
- 无限循环
for(;;) {
// 语句
}
while(true) {
// 语句
}
字典
const myMap = new Map<string, number>();
// 添加键值对
myMap.set('key1', 1);
myMap.set('key2', 2);
myMap.set('key3', 3);
// 获取键对应的值
console.log(myMap.get('key1')); // 输出:1
// 删除键值对
myMap.delete('key2');
// 遍历Map对象
for (const [key, value] of myMap) {
console.log(`${key}: ${value}`);
}
// 清空Map对象
myMap.clear();
JSON
使用对象字面量构建一个快速构建JSON对象
const jsonObject = {
key1: "value1",
key2: "value2",
key3: "value3"
};
数组
- 数组声明
var numlist:number[] = [2,4,6,8];
- 常用方法
- concat ####[连接两个或更多的数组,并返回结果]
- every #####[检测数值元素的每个元素是否都符合条件]
- some #####[是否有元素符合条件并返回]
- filter #####[过滤数值元素,并返回符合条件所有元素的数组]
- forEach ###[数组每个元素都执行一次回调函数]
- indexOf ###[搜索数组中的元素,并返回它所在的位置]
- join ######[把数组的所有元素放入一个字符串]
- lastIndexOf#[从后往前搜索指定的元素]
- map ######[对数组元素内容进行变换]
- pop ######[栈方法,弹出栈头元素]
- push #####[栈方法,元素入栈]
- reverse ###[翻转元素顺序]
- slice #####[数组进行切片]
- sort #####[对数组元素进行排序]
函数
- 定义
function function_name()
{
// 执行代码
}
字符串
- 声明
var txt = new String("string");
或者更简单方式:
var txt = "string";
- 常用方法
charAt // 返回在指定位置的字符
charCodeAt // 返回在指定的位置的字符的 Unicode 编码
concat // 连接两个或更多字符串,并返回新的字符串
indexOf // 返回某个指定的字符串值在字符串中首次出现的位置
lastIndexOf // 从后向前搜索字符串,并返回找到的位置
match // 查找找到一个或多个正则表达式的匹配
replace // 替换与正则表达式匹配的子串
search // 检索与正则表达式相匹配的值
slice // 提取字符串的片断
split // 把字符串分割为子字符串数组
substring // 提取字符串中两个指定的索引号之间的字符
Math用法
- 常用的方法如下
Math.abs(x):返回x的绝对值。
Math.ceil(x):返回大于或等于x的最小整数。
Math.floor(x):返回小于或等于x的最大整数。
Math.max(x, y, z, ..., n):返回n个参数中的最大值。
Math.min(x, y, z, ..., n):返回n个参数中的最小值。
Math.pow(x, y):返回x的y次幂。
Math.random():返回一个介于0(包含)和1(不包含)之间的随机数。
Math.round(x):返回四舍五入后的整数。
Math.sqrt(x):返回x的平方根。
Math.sin(x):返回x的正弦值。
Math.cos(x):返回x的余弦值。
Math.tan(x):返回x的正切值。
Math.PI:π的值。
Math.E:e的值。
Math.SQRT1_2:1/√2的值。
Math.SQRT2:√2的值。
Math.LOG2E:以2为底e的对数值。
Math.LOG10E:以10为底e的对数值。
Math.LN2:以2为底的自然对数。
Math.LN10:以10为底的自然对数。
Math.LOG210:以2为底10的对数值。
Math.EXPM1:e-1的值。
Math.FLOOR(x):返回小于或等于x的最大整数。
Math.FROUND(x):返回四舍五入到最接近的整数的值。
Math.trunc(x):返回去除小数部分后的值。
日期用法
- 基本用法
const currentDate = new Date();
console.log(currentDate.getFullYear()); // 输出当前年份
console.log(currentDate.getMonth()); // 输出当前月份
console.log(currentDate.getDate()); // 输出当前日期
console.log(currentDate.getDay()); // 输出当前星期几
console.log(currentDate.getHours()); // 输出当前小时数
console.log(currentDate.getMinutes()); // 输出当前分钟数
console.log(currentDate.getSeconds()); // 输出当前秒数
- 比较大小
if (date1 > date2) {
console.log('date1 is later than date2');
} else if (date1 < date2) {
console.log('date1 is earlier than date2');
} else {
console.log('date1 and date2 are the same');
}
十六进制、十进制的转化
function hexToDecimal(hex) {
return parseInt(hex, 16);
}
const hex = "1A";
const decimal = hexToDecimal(hex);
console.log(decimal); // 输出:26
定时器
let timer: any;
timer = setTimeout(() => { console.log('此处声明了一个定时器') }, 1000);
let timer: any;
timer = setInterval(() => { console.log('定时器') }, 1000);