employee.ts 571 B

12345678910111213141516171819202122232425
  1. interface Employee {
  2. name: string;
  3. title: string;
  4. logID: () => string;
  5. }
  6. // Implements Employee and more, so:
  7. // - can be used as an Employee parameter
  8. // - is not of type Employee
  9. // TS calls this a "structural type system" aka "duck typing": interfaces as
  10. // matches as implemented even when not declared, like in Go.
  11. let dev = {
  12. name: 'hr',
  13. title: 'senior TS dev',
  14. editor: 'VSCode',
  15. };
  16. let newEmployee : Employee = { ...dev, logID: () => this.name };
  17. function foo(e: Employee) {
  18. console.log(e.name + ": " + e.title);
  19. }
  20. // foo(dev);
  21. foo(newEmployee);