Type '{}' is not assignable to type '{ title: string; text: string; }' Type '{}' is not assignable to type '{ title: string; text: string; }' typescript typescript

Type '{}' is not assignable to type '{ title: string; text: string; }'


You told the compiler that article is of type { title: string, text: string } but then you assign an empty object ({}) which lacks both title and text, so the compiler complains.

You can use type assertion to tell the compiler that it's ok:

let article: { title: string, text: string } = {} as { title: string, text: string };

You can also put that into a type alias:

type MyType = { title: string, text: string };let article: MyType = {} as MyType;

And as you're using type assertion then you can simply:

let article = {} as MyType;


The reason is quite simply that you claim article should have title and text fields, but {} doesn't. How to resolve it depends on what you want to show while article has the initial value, but the simplest fix would be to make the fields optional: { title?: string, text?: string }.


I'll add a third option here for people passing by: Add sane defaults.

const article: { title: string, text: string } = {    title: "default title",    text: "default text"};

It might not be applicable here, but generally it is considered good form to initialize objects to satisfy their type and have as tight types as possible.