type ToObject<T> = T extends unknown[] | Record<string, unknown> ? T : never;
type Foo = {
id: number;
title: string;
}
interface Bar {
id: number;
title: string;
}
type Baz = (a: number) => number;
type A = ToObject<Foo>; // Foo < OK
type B = ToObject<Bar>; // never < WHY???
type C = ToObject<Baz>; // never < OK what I want
I want to know type what satisfing with stringify. (ToObject
)
But interface(Bar
) did not work what I expect.
Q1. Why interface is not Record<string, unknonw>
?
Q2. How can I handle interface?
This is TS playground link
https://www.typescriptlang.org/play/?#code/C4TwDgpgBAKg9geQEYCsIGNgB4YD4oC8sUEAHsBAHYAmAzlAK6UDWlcA7pQNoC6UAPlABKGOACdqWWsDEBLSgHMANIxZtO+APzEAXFEoQAbhDEBuAFDnQkKADE4cQlADe5qFFnU9lBgFskJhbuwLLAADYQetJyihYAvpbyFGIAZgCG6NAAQmliLm4eXvp+AWYFIeGRUNHyCvGW1tlpAF5OABRp3iUmAJSE+D7+gQ3g0ACCTvDIaJhY9nC4Fo1QWZOIqBjYOWKLVqNQAMJr05tYOc2LQA