1. let b: boolean = true;
  2. let n: number = 100;
  3. let s: string = 'hello';
  4. let sy: symbol = Symbol();
  5. let x: number | string = 100;
  6. x = 'string';
  7. // any 要慎用,要不ts没有意义了
  8. let y: any = 100;
  9. y = true;
  10. // 数组
  11. let arr: string[] = ['1', 'b', 'c'];
  12. let numberA: Array<number> = [10, 20, 30];
  13. // 元组
  14. let arr1: Array<string | number | boolean> = [1, '2', false];
  15. // 对象
  16. let obj: object = { x: 100 }
  17. // 函数
  18. let fn: Function = () => { }
  19. // object、Function不常用,不够细节
  20. // 断言
  21. let n1 = 200;
  22. // n1 = 's'; 报错,ts自动根据上面的赋值去断言类型
  23. // 函数的使用,如果返回值很明确,可以不写返回值类型
  24. function fn2(n1: number, n2: number): number {
  25. return n1 + n2;
  26. }
  27. // 如没有返回值,使用 voidvoid
  28. // 自定义类型
  29. type info = string | number;
  30. let info1: info = 'hello';
  31. info1 = 100;
  32. type fnType = (a: number, b: string) => void;
  33. const fn3: fnType = (a, b) => { }
  34. // 接口
  35. interface IPerson {
  36. name: string // 每一项无分号
  37. age: number
  38. fn1: fnType
  39. }
  40. // interface 用于 对象
  41. const zhangsan: IPerson = {
  42. name: 'zwx',
  43. age: 20,
  44. fn1: (a: number, b:string) => { }
  45. }
  46. // interface 用于 class
  47. class Person implements IPerson {
  48. name: string
  49. age: number
  50. constructor(name: string, age: number) {
  51. this.name = name
  52. this.age = age
  53. }
  54. fn1(a: number, b: string) { }
  55. }

TS 静态属性

  1. class Foo {
  2. name: string
  3. constructor(name: string) {
  4. this.name = name;
  5. }
  6. getName() {
  7. return this.name;
  8. }
  9. static flag = 'abc'
  10. static getFlag() {
  11. return this.flag
  12. }
  13. }
  14. const f1 = new Foo('zs');
  15. // 这些都是实例属性,实例方法
  16. f1.name // zs
  17. f1.getName() // zs
  18. // 这些是静态属性, 在实例f1身上获取不到的,会报错
  19. Foo.flag // abc
  20. Foo.getFlag() // abc