Types
The monorepo contains a package called types
which has clear rules which types are included there. Basically, types
should live and be exported in the corresponding file where it is initially created.
An example is a type called Props
that includes some prop types of a component. Initially, we assume the type is only
used in this file so it’s declared there.
// imported from '@frachtwerk/essencium-types' package because 'UserInput' is used in multiple packages
import { UserInput } from '@frachtwerk/essencium-types'
// exported to be used in multiple files but not in other packages
export type Avatar = {
url: string
alt: number
}
// only used in this file
type Props = {
name: string
age: number
}
function Profile(props: Props): JSX.Element { ... }
Sometimes we have a case, where a type is used across multiple packages in the monorepo. This is exactly why the types
package exists. It holds all types that are used by more than one package.