Browse Source

5.8: creating classes.

Frederic G. MARAND 5 years ago
parent
commit
fb2284f21e
8 changed files with 10 additions and 93 deletions
  1. 3 11
      app/app.ts
  2. 0 16
      app/developer.ts
  3. 0 25
      app/employee.ts
  4. 0 7
      app/engineer.ts
  5. 0 5
      app/manager.ts
  6. 0 17
      app/person.ts
  7. 7 0
      app/player.ts
  8. 0 12
      app/webdeveloper.ts

+ 3 - 11
app/app.ts

@@ -52,14 +52,6 @@ function logError(message: string): void {
   console.error(message);
 }
 
-let myResult: Result = {
-  playerName: 'Marie',
-  score: 5,
-  problemCount: 5,
-  factor: 7,
-};
-
-let player: Person = {
-  name: 'Daniel',
-  formatName: () => 'Dan',
-};
+let firstPlayer: Player = new Player();
+firstPlayer.name = 'Lanier';
+console.log(firstPlayer.formatName());

+ 0 - 16
app/developer.ts

@@ -1,16 +0,0 @@
-class Developer {
-  department: string;
-  private _title: string;
-
-  get title(): string {
-    return this._title;
-  }
-
-  set title(title: string) {
-    this._title = title.toUpperCase();
-  }
-
-  documentRequirements(requirements: string): void {
-    console.log(requirements);
-  }
-}

+ 0 - 25
app/employee.ts

@@ -1,25 +0,0 @@
-interface Employee {
-  name: string;
-  title: string;
-  logID: () => string;
-}
-
-// Implements Employee and more, so:
-// - can be used as an Employee parameter
-// - is not of type Employee
-// TS calls this a "structural type system" aka "duck typing": interfaces as
-// matches as implemented even when not declared, like in Go.
-let dev = {
-  name: 'hr',
-  title: 'senior TS dev',
-  editor: 'VSCode',
-};
-
-let newEmployee : Employee = { ...dev, logID: () => this.name };
-
-function foo(e: Employee) {
-  console.log(e.name + ": " + e.title);
-}
-
-// foo(dev);
-foo(newEmployee);

+ 0 - 7
app/engineer.ts

@@ -1,7 +0,0 @@
-class Engineer implements Employee {
-  name: string;
-  title: string;
-  logID() {
-    return `${this.name} - ${this.title}`;
-  }
-}

+ 0 - 5
app/manager.ts

@@ -1,5 +0,0 @@
-interface Manager extends Employee {
-  departement: string;
-  numOfEmployees: number;
-  scheduleMeeting: (topic: string) => void;
-}

+ 0 - 17
app/person.ts

@@ -4,20 +4,3 @@ interface Person {
   formatName: () => string;
   name: string;
 }
-
-abstract class FooBase {
-  age: number;
-  name: string;
-}
-
-class Foo extends FooBase implements Person {
-  constructor(props: string[]) {
-    super();
-    this.age = 0;
-    this.name = "Doe";
-  }
-
-  formatName(): string {
-    return this.name;
-  }
-}

+ 7 - 0
app/player.ts

@@ -0,0 +1,7 @@
+class Player implements Person {
+  age: number;
+  formatName(): string {
+    return this.name.toUpperCase();
+  }
+  name: string;
+}

+ 0 - 12
app/webdeveloper.ts

@@ -1,12 +0,0 @@
-class WebDeveloper extends Developer {
-  favoriteEditor: string;
-  writeTypeScript(): void {
-    // Write awesome code.
-  }
-}
-
-let webdev = new WebDeveloper();
-webdev.department = 'Software Engineering';
-webdev.favoriteEditor = 'WebStorm';
-webdev.documentRequirements('Markdown');
-webdev.writeTypeScript();