Importazioni in Bicep

Questo articolo descrive la sintassi usata per esportare e importare funzionalità condivise e spazi dei nomi per le estensioni Bicep. L'uso delle importazioni in fase di compilazione abilita automaticamente la generazione del codice della versione 2.0 del linguaggio.

Esportare variabili, tipi e funzioni

L'elemento @export() decorator indica che un altro file può importare un'istruzione specifica. Questo elemento decorator è valido solo nelle typeistruzioni , vare func . Le istruzioni variabili contrassegnate con @export() devono essere costanti in fase di compilazione.

La sintassi per l'esportazione delle funzionalità da usare in altri file Bicep è:

@export()
<statement_to_export>

Importare variabili, tipi e funzioni

La sintassi per l'importazione di funzionalità da un altro file Bicep è:

import {<symbol_name>, <symbol_name>, ...} from '<bicep_file_name>'

Con l'aliasing facoltativo per rinominare i simboli:

import {<symbol_name> as <alias_name>, ...} from '<bicep_file_name>'

Uso della sintassi di importazione con caratteri jolly:

import * as <alias_name> from '<bicep_file_name>'

Puoi combinare e associare le sintassi precedenti. Per accedere ai simboli importati usando la sintassi con caratteri jolly, è necessario usare l'operatore . : <alias_name>.<exported_symbol>.

Per l'importazione sono disponibili solo le istruzioni esportate nel file a cui si fa riferimento.

È possibile usare le funzionalità importate da un altro file senza restrizioni. Ad esempio, è possibile usare variabili importate in qualsiasi punto in cui una variabile dichiarata nel file sia normalmente valida.

Esempio

export.bicep

@export()
type myObjectType = {
  foo: string
  bar: int
}

@export()
var myConstant = 'This is a constant value'

@export()
func sayHello(name string) string => 'Hello ${name}!'

main.bicep

import * as myImports from 'exports.bicep'
import {myObjectType, sayHello} from 'exports.bicep'

param exampleObject myObjectType = {
  foo: myImports.myConstant
  bar: 0
}

output greeting string = sayHello('Bicep user')
output exampleObject myImports.myObjectType = exampleObject

Importare spazi dei nomi ed estensioni (anteprima)

Nota

La funzionalità sperimentale extensibility deve essere abilitata dal file di configurazione Bicep per usare tale funzionalità.

La sintassi per l'importazione degli spazi dei nomi è:

import 'az@1.0.0'
import 'sys@1.0.0'

Sia az che sys sono spazi dei nomi integrati in Bicep. Vengono importati per impostazione predefinita. Per ulteriori informazioni sui tipi di dati e sulle funzioni definite in az e sys, vedere Tipi di dati e funzioni Bicep.

La sintassi per l'importazione di estensioni Bicep è la seguente:

import '<extension-name>@<extension-version>'

La sintassi per l'importazione di estensioni Bicep, che richiedono la configurazione è:

import '<extension-name>@<extension-version>' with {
  <extension-properties>
}

Per un esempio, vedere Estensione Di Bicep Kubernetes.