The type of list in your example gets inferred by the compiler to be Array<{name: string}>, and thus the compiler has completely forgotten the particular string literal types of the name properties by the time you try to define Title.
You'll have to change how you assign list, at least somewhat. The easiest thing to do (which may or may not meet your needs) is to use a const assertion, which asks the compiler to infer the narrowest type possible:
export const list = [
{ name: 'parentTitle', },
{ name: 'anotherTitle', },
{ name: 'whatever', },
] as const;
Now list is inferred to be of type:
/*
const list: readonly [
{ readonly name: "parentTitle";},
{ readonly name: "anotherTitle";},
{ readonly name: "whatever";}
]
*/
which is a readonly tuple of readonly objects with particular name properties in a particular order. From that we can use lookup types to define Title:
type Title = typeof list[number]["name"];
// type Title = "parentTitle" | "anotherTitle" | "whatever"
Okay, hope that helps; good luck!
Playground link to code