|
@@ -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);
|