Item 6: Use Your Editor to Interrogate and Explore the Type SystemItem 7: Think of Types as Sets of ValuesItem 8: Know How to Tell Whether a Symbol Is in the Type Space or Value SpaceItem 9: Prefer Type Declarations to Type AssertionsItem 10: Avoid Object Wrapper Types (String, Number, Boolean, Symbol, BigInt)Item 11: Recognize the Limits of Excess Property CheckingItem 12: Apply Types to Entire Function Expressions When PossibleItem 13: Know the Differences Between type and interfaceItem 14: Use Type Operations and Generics to Avoid Repeating YourselfItem 15: Use Index Signatures for Dynamic DataItem 16: Prefer Arrays, Tuples, and ArrayLike to number Index SignaturesItem 17: Use readonly to Avoid Errors Associated with MutationItem 18: Use Mapped Types to Keep Values in Sync