TypeScript and Duck Typing

interface IItem 
{
id: number,
title: string
};
function print(item: IItem)
{
console.log(item.id + " > " + item.title);
}
var i : IItem = {
id: 10,
title : "ABC"
};
//Ok - As it implements IItem
print(i);
//Ok - As it implicitly implements IItem
print({ id: 11, title: "XYZ" });
interface IProduct
{
id: number,
title: string,
author: string
};
var book: IProduct = {
id: 1,
title: "C# in Depth",
author: "Jon Skeet"
};
//Ok - Even though book implements IProduct and not the IItem
//It has two properties "id" and "title"
//which is actually the print function is interested in
print(book);

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store