ts基本数据类型:
一、布尔类型(Boolean)
var isDone: boolean = true ;
二、数字类型(Number) 23
var num: number = 9;
三、字符串类型(Sring)
var str: string = 'hello world'
四、数组类型(Sring)两种方式
【1】var arr: number[] = [22,3,45,2]
【2】var arr:Array<number> = [22,3,45,2]
五、枚举类型(Enum)
枚举类型中的成员开始的索引是0,可以手动修改
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
六、任意类型(Any)
let notSure: any = 4;
let list:any[] = [1, true, "free"];
七、无类型(void)
函数没有返回值
function warnUser(): void {
alert("This is my warning message");}
八、元组 Tuple
let x: [string, number];
x = ['hello', 10]; // OK
x = [10, 'hello']; // Error
当访问一个越界的元素,会使用联合类型替代:
x[3] = 'world'; // OK, 字符串可以赋值给(string | number)类型
九、Null和Undefined
十、Never类型
never类型表示的是那些永不存在的值的类型
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}
十一、Object
object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。
解构数组:
let input = [1, 2];
let [first, second] = input;
console.log(first); // outputs 1
console.log(second); // outputs 2
可以在数组里使用...语法创建剩余变量:
let [first, ...rest] = [1, 2, 3, 4];
console.log(first); // outputs 1
console.log(rest); // outputs [ 2, 3, 4 ]
对象解构:
let o = {
a: "foo",
b: 12,
c: "bar"
};
let { a, b } = o;
console.log(0.b);//12
let { a, ...passthrough } = o;
let total = passthrough.b + passthrough.c.length;//15
展开:
数组展开:
let first = [1, 2];
let second = [3, 4];
let bothPlus = [0, ...first, ...second, 5];
console.log(bothPlus);//[0, 1, 2, 3, 4, 5]
对象展开:
let defaults = { food: "spicy", price: "$$", ambiance: "noisy" };
let search = { ...defaults, food: "rich" };
console.log(search);//{ food: "rich", price: "$$", ambiance: "noisy" }
接口和类:
interface -- 接口只声明成员方法,不做实现。
class -- 类声明并实现方法。
readonly vs const
最简单判断该用readonly还是const的方法是看要把它做为变量使用还是做为一个属性。 做为变量使用的话用 const,若做为属性则使用readonly。
[value]和[ngValue]问题
angular nz-table就不会有此问题,底层已经解决啦。
angular material中的下拉框中如果数据时从后台读取的,并且有“请选择”选项,当第一次选择有值的选项时没有问题,当第二次选择“请选择”选项时会多发次请求,其实这个请求是多余的。
原因:传值的问题,后台接收string;如果[value]传的值是string,那么‘null’传后台的话,就是string,改为[ngValue]的话,传的就是object,后台就读取不了。