js void 0 & undefined All In One interface Animal { speak(): void; } class Dog implements Animal { food: string = ''; // override 字类覆盖父类方法 constructor(food: string) { // super(); this.food = food; } speak() { console.log("wang!"); } eat(food: string) { // ?? => !== null && !== void 0 ? : // void 0 === undefined console.log(food ?? this.food); } } const puppy = new Dog('meat'); puppy.speak(); puppy.eat('🐶'); "use strict"; class Dog { // override 字类覆盖父类方法 constructor(food) { this.food = ''; // super(); this.food = food; } speak() { console.log("wang!"); } eat(food) { // ?? => !== null && !== void 0 ? : // void 0 === undefined console.log(food !== null && food !== void 0 ? food : this.food); } } const puppy = new Dog('meat'); puppy.speak(); puppy.eat('🐶');
https://www.typescriptlang.org/play?ssl=23&ssc=17&pln=1&pc=1#code/JYOwLgpgTgZghgYwgAgIImAWzgG2QbwFgAoZZAZwAcI4BrACgEoAuZANwHtgATAbhIC+JEghxxy5ZABEOAc2RZKOCJgjhJ6LLgIkyMDh26tyYKKHkBeZAHJr-UsgD0j5BzbQz3FIHVtQN4+gMMjANbdANidfQE7TQFWbXWQEDhATKABXBDAOKHp9Q2NTc0YdBzJnCkTqdMZ7MjIwAAtgcgA6TO5kKyaK5CEHKhoGPKICmLjyDmV6nDl6ACIAdzgQWQBCSfLozrIaMAyDIwoc+b7owpcAfmOWgD5kBYsrEEScPAAyR6ub9i5mgAZkM9ZDpxcnB4yG+NysiRAXhgoAg3H+sXiIwgYwmTR+ZxqdUa2xWDk6nQRJmQlBKlAAni1kCAINNpBNrKo4GBrLiSZRyfVunQmPY2RyNvRrIBeDcAbDss3hAA