2017-09-21 41 views
0

在一個文件中,我有我的類實現..如何在另一個文件中使用類的類型?

// person.js 
class Person { 
    ... 
} 

另一個文件,我想用這種類型的...

// job.js 
class Job { 
    person: Person; // ERROR: Flow: identifier `Person`. Could not resolve name 

https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAodxhgA4FMBOAznAHYB0AVoagC4CeeYACgcSQPLY0CWphYAXjABvVGDCEaAQxoBXQgC4JNfNxIBzVAF90AYxhTC-FkVIixYElIC2uJZNUaA3BbhdeJRc1alOPPi7iunwqsro0cPhgABRWtvYqauoANGBu-lYwfh5eJmzZfACU5uLiNAAW3IRkcbiClja4gaUVVWTpOfUdpFJZ7gEWOhbquDQAytJyhNHFoqVgwZ5wMLhk8OrRAAYAJMKt1bVaYFVgu-vt-Z5kkjLyWpuFzTpDqJhgAJIAcmAAgp-sABUABIAUQASmAAGLvAAyIIwWAocAARpRqPpDPwAFIokpgHg0FYJRzqZp4UwkJR5UhOMBvcFg9hgpSQ+AIJTcAAmuBIPCg3AIYE21JImzIYAAwnBZDBOZY4DQwPhcMQYAA3Oq1CyLBxhCJRaIEonKEmpclsKk+EizCxlSrVI11ISO5p2trmsxCD0kJ7ocQjcaTeQzPFBPjLVbrLZne1kb01RpHBCRADWYAQ3Aqpz2scd90eg206CAA


/* @flow */ 

// person.js 
type PersonOptions = { 
    status: string 
} 

class Person { 
    name: string; 
    options: PersonOptions; 
    constructor (name: string, optionalOptions: PersonOptions) { 
    this.name = name; 
    this.options = optionalOptions; 
    } 

    getStatus() { 
    console.log(`${this.name} is ${this.options.status}`); 
    } 
} 


// IN ANOTHER FILE 

// job.js 
class Job { 
    title: string; 
    person: Person; // ERROR: Flow: identifier `Person`. Could not resolve name 
    constructor (title: string, person: Person) { 
    this.title = title; 
    this.person = person; 
    } 

    getStatus() { 
    console.log(`${this.person.name} work with ${this.title}`); 
    } 
} 

回答

1

在流程可以導出類型

export type Person = { 
    // ... 
} 

,並在另一個文件

import type { Person } from './Person' 

導入它在你的情況下,如果類具有默認的導出您可以簡單:

// Person.js 

export default class Person { 
    //... 
} 

// another file 

import type Person from './Person' 

class Job { 
    title: string; 
    person: Person; // Flow should not throw an error  
    constructor (title: string, person: Person) { 
    this.title = title; 
    this.person = person; 
    } 

    getStatus() { 
    console.log(`${this.person.name} work with ${this.title}`); 
    } 
} 

乘坐看看DOCUMENTATION

1
// in person.js 
export default class Person { 
    //... 
} 
//in other file 
import Person from './person.js'; 
class job { 
    person: new Person() 
} 
相關問題