function sayName(params: {firstName: string; lastName?: string}) {
params.lastName = params.lastName || 'smith'; // <<-- any better alternative to this?
var name = params.firstName + params.lastName
alert(name);
}
sayName({firstName: 'bob'});
私は次のようなものが機能するかもしれないと想像していました:
function sayName(params: {firstName: string; lastName: string = 'smith'}) {
明らかに、これらが単純な引数であれば、次のように実行できます。
function sayName(firstName: string, lastName = 'smith') {
var name = firstName + lastName;
alert(name);
}
sayName('bob');
また、CoffeeScript では条件付き存在演算子にアクセスできるので、次の操作を実行できます。
param.lastName ?= 'smith'
これは次の JavaScript にコンパイルされます:
if (param.lastName == null) {
param.lastName = 'smith';
}
ベストアンサー1
実は、簡単な方法があるようです。次のコードは TypeScript 1.5 で動作します。
function sayName({ first, last = 'Smith' }: {first: string; last?: string }): void {
const name = first + ' ' + last;
console.log(name);
}
sayName({ first: 'Bob' });
コツは、最初に引数オブジェクトから選択するキーを括弧で囲み、key=value
デフォルト値を で指定することです。その後に:
と型宣言を続けます。
これは、あなたがやろうとしていたこととは少し異なります。なぜなら、完全なparams
オブジェクトではなく、逆参照された変数があるからです。
関数に何かを渡すことをオプションにしたい場合は、型内のすべてのキーに を追加し、型宣言の後に?
のデフォルトを追加します。={}
function sayName({first='Bob',last='Smith'}: {first?: string; last?: string}={}){
var name = first + " " + last;
alert(name);
}
sayName();