Browse Source

5.4: TypeScript Structural Type System.

Frederic G. MARAND 5 years ago
parent
commit
eab60094ec
1 changed files with 20 additions and 0 deletions
  1. 20 0
      app/enterprise.ts

+ 20 - 0
app/enterprise.ts

@@ -8,3 +8,23 @@ interface Manager extends Employee {
   numOfEmployees: number;
   scheduleMeeting: (topic: string) => void;
 }
+
+// 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 employee : Employee = dev;
+
+function foo(e: Employee) {
+  console.log(e.name + ": " + e.title);
+}
+
+foo(dev);
+foo(employee);