Compartir a través de


Importaciones en Bicep

En este artículo se describe la sintaxis que se usa para exportar e importar la funcionalidad compartida y los espacios de nombres para las extensiones de Bicep. El uso de importaciones en tiempo de compilación permite generar automáticamente código de la versión 2.0 del lenguaje.

Exportación de variables, tipos y funciones

El decorador @export() indica que otro archivo puede importar una instrucción específica. Este decorador solo es válido en las instrucciones type, var y func. Las instrucciones variables marcadas con @export() deben ser constantes en tiempo de compilación.

La sintaxis para exportar la funcionalidad para su uso en otros archivos de Bicep es:

@export()
<statement_to_export>

Importación de variables, tipos y funciones

La sintaxis para importar la funcionalidad desde otro archivo de Bicep es:

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

Con alias opcional para cambiar el nombre de los símbolos:

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

Con la sintaxis de importación de caracteres comodín:

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

Puede mezclar y hacer coincidir las sintaxis anteriores. Para acceder a los símbolos importados mediante la sintaxis de caracteres comodín, debe usar el operador .: <alias_name>.<exported_symbol>.

Solo están disponibles para la importación las instrucciones exportadas en el archivo al que se hace referencia.

Puede usar la funcionalidad que se importó desde otro archivo sin restricciones. Por ejemplo, puede usar variables importadas en cualquier lugar en el que normalmente sería válida una variable declarada en un archivo.

Ejemplo

exports.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

Importación de espacios de nombres y extensiones (versión preliminar)

Nota:

La característica experimental extensibility debe estar habilitada desde el archivo de configuración de Bicep para usar esta característica.

La sintaxis para importar espacios de nombres es:

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

Tanto az como sys son espacios de nombres integrados de Bicep. Se importan de forma predeterminada. Para obtener más información sobre los tipos de datos y las funciones definidas en az y sys, consulte Tipos de datos y funciones de Bicep.

La sintaxis para importar extensiones de Bicep es:

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

La sintaxis para importar extensiones de Bicep que requieren configuración es:

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

Para obtener un ejemplo, consulte Extensión de Kubernetes de Bicep.