Я думаю о чем-то вроде Haskell, где неявная передача между разными типами является ошибкой времени компиляции.
Я хотел бы иметь возможность сделать что-то вроде:
type Username = string;
type Password = string;
function login(username: Username, password: Password): void {
// do some stuff
}
const username: Username = getUsername();
const password: Password = getPassword();
login(password, username); // ideally, should error
Попытка это, кажется, работает просто отлично. Мне интересно, может быть, мне нужно что-то, кроме псевдонима типа. Я думаю, что это возможно, если я оберну его в объект, но я не знаю.
Возможно ли такое?