2016-10-11 5 views
0

最初のインターフェースが継承する別のインターフェースのインスタンスを生成することで、1つのインターフェースのプロパティーを設定できますか?継承を持つ別のインターフェースのプロパティーを設定する

たとえば、ランダムインスタンスを生成する関数を持つuserインターフェイスがあります。

import * as Chance from 'chance'; 

export interface User { 
    username: string; 
    firstName: string; 
    lastName: string; 
    password: string; 
    email: string; 
    gender: string; 
    streetAddress: string; 
    city: string; 
    state: string; 
    zipCode: string; 
    country: string; 
    phoneNumber: string; 
} 

export function generateRandomUser(): User { 
    let randomuser: User; 

    randomuser.firstName = Chance.first(); 
    randomuser.lastName = Chance.last(); 
    randomuser.username = randomuser.firstName + randomuser.lastName; 
    randomuser.password = 'password'; 

    return randomuser; 
} 

は、それから私は別の機能

import { User, generateRandomUser } from '../user'; 
import * as Chance from 'chance'; 

interface ProUser extends User { 
    favoriteColor: string; 
} 

function generateRandomProUser(): ProUser { 
    let generalUser = generateRandomUser(); 
    let randomProUser: ProUser; 

    // simple way to set the props from generalUser to randomProUser?? 

    randomProUser.favoriteColor = Chance.color(); 

    return randomProUser; 
} 

は、これらのプロパティを超えるマッピングする簡単な方法があります発生していた、のは、それはProUserだとしましょう、より具体的なユーザーのために別のインタフェースを持っていますか?私はこのマッピング機能を使用することができる他のユーザータイプも持っています。

答えて

1

あなたは簡単に行うことができます。

function generateRandomProUser(): ProUser { 
    let generalUser = generateRandomUser(); 
    let randomProUser = Object.assign({}, generalUser) as ProUser; 

    randomProUser.favoriteColor = Chance.color(); 

    return randomProUser; 
} 
+0

パーフェクト:

function generateRandomProUser(): ProUser { let randomProUser = generateRandomUser() as ProUser; randomProUser.favoriteColor = Chance.color(); return randomProUser; } 

別のオプションはObject.assignを使用することです。私は何かがあることを知っていましたが、どこを見るかわかりませんでした。ありがとう。 –

関連する問題