2016-07-12 2 views
1

私はHaskellのようなものについて考えています.Haskellは、さまざまな型間で暗黙的に転送するコンパイル時エラーです。FlowTypeに互換性のないエイリアスがある可能性がありますか?

私のような何かをできるようにしたいと思います:

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 

を、これがうまく動作するようですしようとしています。多分型エイリアスの他に何かが必要なのかどうか疑問に思っています。私はオブジェクトにラップすることは可能だと思いますが、わかりません。

このようなことは可能ですか?

答えて

2

あなたは、この使用してクラスをエミュレートすることができます。

declare class Password {} 

function passwordFromString(str: string): Password { 
    return (str: any); 
} 

function passwordToString(pass: Password): string { 
    return (pass: any); 
} 

function checkPassword(pass: Password): boolean { 
    if (passwordToString(pass) === 'foo') { 
    return true; 
    } 

    return false; 
} 
+0

非常に巧妙です。私はそれが好きです。 –

関連する問題