type EmptyObject = object ; type EmptyExactObject = object ; type SealedObject = { p1 : "string" ; p2 : 1 ; p3 : null ; } ; type ObjectSimple = { p4 : string ; p5 : boolean ; } ; type NestedObject = { p6 : string ; p7 : { p8 : { p9 : number ; } ; p10 : boolean ; } ; p11 : null ; } ; type OptionalObject = { p12 ? : boolean ; p13 : string ; } ; type ExactObjectType = { p14 : number ; p15 : string ; } ; type ExactObjectTypeWithOptionalProp = { p16 : boolean ; p17 ? : string ; p18 ? : number ; } ; type ObjectWithStringLiteralKey = { "p19" : number ; p20 : null ; "p 21" : boolean ; } ; export type ComplexObject = { p22 : string | null | undefined ; readonly p23 : string ; readonly p24 : object ; readonly p25 : null | ( ( ) => void ) ; } ; type ObjectIndexerProperty = { [ key ] : number ; } ; type ObjectIndexerPropertyWithName = { [ key ] : number ; } ; type ObjectIndexerPropertyWithUnsupportedKeyType = { [ key ] : boolean ; [ key ] : boolean ; } ; type ObjectIndexerPropertyWithNamedUnsupportedKeyType = { [ k ] : boolean ; [ k ] : boolean ; } ; type ObjectNamedIndexerProperty = { [ id ] : object ; } ; type ReadOnlyObject = { readonly prop : unknown ; } ; type WriteOnlyObject = { prop : ( ) => void ; } ; function functionWithObjectParameter ( obj ) { } function functionWithObjectInitializer ( p , obj = { } ) { }