Object Types

function printFullName(person: { firstName: string; lastName: string }) {
  console.log("Full Name: " + person.firstName + " " + person.lastName);
}

printFullName({ firstName: "John", lastName: "Doe" });

Optional Properties

Look at the ? beside lastName

function printFullName(person: { firstName: string; lastName?: string }) {
  const fullName = `${person.firstName} ${person.lastName}`;
  console.log("Full Name: " + fullName.trim());
}
printFullName({ firstName: "John", lastName: "Doe" });
printFullName({ firstName: "Alice" });

Optional properties are nullish.

'person.lastName' is possibly 'undefined' here

function printNamesUppercase(person: { firstName: string; lastName?: string }) {
  console.log(person.firstName.toUpperCase());
  console.log(person.lastName.toUpperCase());
}
printNamesUppercase({ firstName: "John", lastName: "Doe" });
printNamesUppercase({ firstName: "Alice" });