1. // 1. 字面量类型与联合类型
    2. interface Res {
    3. code: 500 | 400 | 401
    4. status: 'success' | 'failure'
    5. data: object
    6. }
    7. declare var res: Res
    8. if(res.status === 'success') {} // 完善的提示
    9. // 2. 字面量类型详解
    10. /*
    11. 像上面的 success 它不是一个值,而代表着一个字面量类型,是原始类型的子类型(层级类型)
    12. */
    13. // 3.联合类型: 一组类型的集合
    14. //函数需要用()括起来
    15. interface Tmp {
    16. mixed: true | string | 599 | {} | (() => {}) | (1 | 2)
    17. }
    18. // 联合类型的类型推导
    19. interface Tmp2 {
    20. user:
    21. | {
    22. vip: true,
    23. expires: string
    24. }
    25. |
    26. {
    27. vip: false,
    28. promotion: string
    29. }
    30. }
    31. declare var tmp: Tmp2
    32. if(tmp.user.vip) {
    33. console.log(tmp.user.expires);
    34. }