publicmove(distanceMeter: number = 0) { console.log(`${this.name} moved ${distanceMeter}m`); } }
newAnimal('small cat').name;
运行后得到如下结果
1 2 3
$ npx ts-node src/classes_3.ts ⨯ Unable to compile TypeScript: src/classes_3.ts(12,25): error TS2341: Property 'name' is private and only accessible within class 'Animal'.
publicmove(distanceMeter: number = 0) { console.log(`${this.name} moved ${distanceMeter}m`); } }
let animal = newAnimal('animal'); let dog = newDog('dog'); let person = newPerson('person');
animal = dog animal = person;
运行后得到如下结果
1 2 3 4
$ npx ts-node src/classes_3.ts ⨯ Unable to compile TypeScript: src/classes_3.ts(35,1): error TS2322: Type 'Person' is not assignable to type'Animal'. Types have separate declarations of a private property 'name'.
let aEmployee = newEmployee('durban', '华盛顿'); console.log(aEmployee.getWorkInfo()); console.log(aEmployee.name);
运行后得到的结果如下
1 2 3
$ npx ts-node src/classes_3.ts ⨯ Unable to compile TypeScript: src/classes_3.ts(23,23): error TS2445: Property 'name' is protected and only accessible within class 'Person' and its subclasses.
let aEmployee = newEmployee('durban', '华盛顿'); let aPerson = newPerson('Sakuro');
运行后得到如下错误
1 2 3
$ npx ts-node src/classes_3.ts ⨯ Unable to compile TypeScript: src/classes_3.ts(22,15): error TS2674: Constructor of class 'Person' is protected and only accessible within the class declaration.
$ npx ts-node src/classes_3.ts ⨯ Unable to compile TypeScript: src/classes_3.ts(9,9): error TS2540: Cannot assign to 'name' because it is a constant or a read-only property.