В D1.0 есть typedef, который является строгой типизацией от предопределенного типа до 'newtype.'
D2.0 удалил это, и остался только псевдоним (что такое typedef в C). Говорят о наличии шаблона оболочки, который может сильно создать новый тип.
Проблема с typedef заключалась в том, что были хорошие аргументы для того, чтобы сделать новый тип подтипом предопределенного типа, а также хорошие аргументы для того, чтобы сделать его супертипом.
Семантика typedef заключается в том, что базовый тип неявно преобразуется в новый тип, но новый тип не преобразуется в базовый тип или другие типы с таким же базовым типом. Я использую базовый тип здесь, так как:
typedef int Fish;
typedef Fish Cat;
Fish gold = 1;
Cat fluff = gold;
Не скомпилируется.
И на данный момент 2.048 DMD все еще позволяет использовать typedef (но не использовать его).
Полезно иметь базовый тип, преобразованный в новый тип, поэтому вам не нужно писать
meters = cast(meters) 12.7;