函数 可选参数 默认参数 剩余参数

  1. function person(firstName: string, lastName?: string, age: number = 18, ...phone: string[]) {
  2. return {
  3. firstName,
  4. lastName,
  5. age,
  6. phone: phone
  7. }
  8. }

this this参数

  • 利用箭头函数解决this指向问题
    1. let myObj = {
    2. name: 'str',
    3. showName: function () {
    4. return () => {
    5. console.log(this.name);
    6. }
    7. }
    8. }
    9. let na = myObj.showName()
    10. console.log(na);
    11. function f(this: void) {
    12. //this不可用
    13. }
    14. interface Card {
    15. suit: string
    16. card: number
    17. }
    18. interface Deck {
    19. suits: string[]
    20. cards: number[]
    21. createCardPicker(this: Deck): () => Card
    22. }
    23. let deck: Deck = {
    24. suits: ['1', '2'],
    25. cards: Array(10),
    26. createCardPicker: function (this: Deck) {
    27. return () => {
    28. return {
    29. suit: this.suits[0],
    30. card: this.cards[0]
    31. }
    32. }
    33. }
    34. }

    重载

    1. let suits = ["hearts", "spades", "clubs", "diamonds"];
    2. function pickCard(x): any {
    3. // Check to see if we're working with an object/array
    4. // if so, they gave us the deck and we'll pick the card
    5. if (typeof x == "object") {
    6. let pickedCard = Math.floor(Math.random() * x.length);
    7. return pickedCard;
    8. }
    9. // Otherwise just let them pick the card
    10. else if (typeof x == "number") {
    11. let pickedSuit = Math.floor(x / 13);
    12. return { suit: suits[pickedSuit], card: x % 13 };
    13. }
    14. }
    15. let myDeck = [{ suit: "diamonds", card: 2 }, { suit: "spades", card: 10 }, { suit: "hearts", card: 4 }];
    16. let pickedCard1 = myDeck[pickCard(myDeck)];
    17. alert("card: " + pickedCard1.card + " of " + pickedCard1.suit);
    18. let pickedCard2 = pickCard(15);
    19. alert("card: " + pickedCard2.card + " of " + pickedCard2.suit);