Typescript interfaces: Difference between revisions

From wikinotes
m (Will moved page Typescript interface to Typescript interfaces without leaving a redirect)
 
(One intermediate revision by the same user not shown)
Line 6: Line 6:
<syntaxhighlight lang="typescript">
<syntaxhighlight lang="typescript">
interface Person {
interface Person {
     firstName: string;
     name: string;
    lastName: string;
}
}


Line 18: Line 17:
}
}


getId({ id: 1, firstName: "anakin", lastName: "skywalker" }); // valid
getId({ id: 1, name: "vaderd" });                  // valid (has both 'id', 'name')
getId({ id: 2, name: "palpatine", isRoot: true }); // valid (extra param ignored, interface matched)
getId({ name: "lukes" })                            // invalid (missing id)
</syntaxhighlight>
</syntaxhighlight>
</blockquote><!-- Interface -->
</blockquote><!-- Interface -->

Latest revision as of 00:30, 17 December 2022

In typescript, interfaces are implicit -- any object that satisfies the requested interface is allowed.
Interfaces can be extended (grown) into new interfaces that include others.

Interface

interface Person {
    name: string;
}

interface Employee extends Person {
    id: number;
}

function getId(employee: Employee): number {
    return employee.id;
}

getId({ id: 1, name: "vaderd" });                   // valid (has both 'id', 'name')
getId({ id: 2, name: "palpatine", isRoot: true });  // valid (extra param ignored, interface matched)
getId({ name: "lukes" })                            // invalid (missing id)

Type Alias

You can also define a type-alias, but you cannot extend it in a new interface.

type Point {
    x: number;
    y: number;
}