Bit ha due forme principali per rappresentare un Bit Id.

BitId instance

Istanza della classe BitId con proprietà chiare di ambito, nome e versione. Ad esempio: BitId { scope: 'my-scope', name: 'my-name', version: '0.0.1 } . Questa è la rappresentazione preferibile di BitId. Ove possibile, utilizzare questo formato.

Stringa ID bit

Una rappresentazione di stringa di BitId. BitId.toString() genera questa stringa. Ad esempio: my-scope/my-name@0.0.1 . Quando un ID viene inserito dall'utente finale è sempre una stringa. Il problema con la rappresentazione della stringa è che dall'introduzione dello spazio dei nomi dinamico, non è chiaro dalla stringa se un ID ha un ambito o meno. Nell'esempio precedente, my-scope/my-name potrebbe essere interpretato come un id con scope ( { scope: 'my-scope', name: 'my-name' } ) o un id senza scope ( { scope: null, name: 'my-scope/my-name' } ). Vedere la sezione successiva come analizzare in modo sicuro la stringa.

Come trasformare una stringa di Bit ID in un'istanza di BitId

Ci sono tre casi da considerare.Utilizzate le strategie in quest'ordine.

Si sa se l'ID ha un ambito

Quando aggiungo un nuovo componente,so che l'ID non ha un nome di ambito.D'altra parte,quando ottengo componenti esportati sul bare-scope,so che gli ID hanno nomi di ambiti.

Usa BitId.parse(id: BitIdStr, hasScope: boolean = true): BitId

Si ha un'istanza del consumatore

Usa Consumer.getParsedId(id: BitIdStr): BitId quando sai che l'ID dovrebbe essere presente e per generare un'eccezione quando non lo è. In alternativa, utilizzare Consumer.getParsedIdIfExist(id: BitIdStr): BitId | null | undefined quando non sei sicuro che il componente sia presente.

Si ha un'istanza di Ambito

Usa Scope.getParsedId(id: BitIdStr): Promise<BitId> . È la chiamata più costosa delle tre, quindi usala solo quando le altre due non sono opzioni.