Open DylanVann opened 1 year ago
I had the same issue, I didn't manage to prevent the interface allowing any property however I did create a wrapper interface to achieve this:
type MakeStrict<T> = {
[K in keyof T as string extends K
? never
: number extends K
? never
: K]: T[K];
};
export interface MyEventProperties {
email: string
[property: string]: any;
}
type StrictMyEventProperties = MakeStrict<MyEventProperties>
This is also an issue for my team. Built in tracking plan support here would be very valuable.
Currently the generated types for TypeScript look like:
This means that if a property doesn't exist, or is removed, in Protocols, then it will not be a compile error. I think some users (including myself) would prefer to know about excess/removed properties if possible.
I believe that this could be changed by making the JSON Schema include
additionalProperties: false
on most definitions. It seems the default for QuickType is to generate[property: string]: any;
if it is not set tofalse
.I tried to use a "Common JSON Schema" set to:
It did not work though.