Importações em Bicep

Este artigo descreve a sintaxe que você usa para exportar e importar funcionalidades e namespaces compartilhados. O uso de importações em tempo de compilação habilita automaticamente a geração de código da versão 2.0 do idioma.

Exportar variáveis, tipos e funções

O @export() decorador indica que outro arquivo pode importar uma declaração específica. Este decorador só é válido em type, var, e func declarações. As declarações de variáveis marcadas com @export() devem ser constantes em tempo de compilação.

Note

Não podes importar valores de parâmetros usando a importinstrução. Para reutilizar valores de parâmetros de outro ficheiro de parâmetros, use extends e acede aos valores herdados usando base.<parameterName>. Para mais informações, consulte o ficheiro Estender parámetros.

A sintaxe para exportar a funcionalidade para uso em outros arquivos Bicep é:

@export()
<statement_to_export>

Importar variáveis, tipos e funções

A sintaxe para importar a funcionalidade de outro arquivo Bicep é:

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

Com criação opcional de aliases para renomear símbolos:

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

Usando a sintaxe de importação curinga:

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

Você pode misturar e combinar as sintaxes anteriores. Para acessar símbolos importados usando a sintaxe curinga, você deve usar o . operador: <alias_name>.<exported_symbol>.

Apenas as declarações que foram exportadas no ficheiro que está a ser referenciado estão disponíveis para serem importadas.

Você pode usar a funcionalidade que foi importada de outro arquivo sem restrições. Por exemplo, você pode usar variáveis importadas em qualquer lugar que uma variável declarada no arquivo normalmente seria válida.

A partir da CLI do Bicep versão 0.31.X, as variáveis importadas de outros arquivos Bicep são acessíveis dentro de suas funções definidas pelo usuário, assim como as variáveis definidas localmente. Para obter mais informações, consulte Funções definidas pelo usuário.

Exemplo

exportações.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

Importar espaços de nomes

A sintaxe para importar namespaces é:

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

Ambos az e sys são namespaces internos do Bicep. Eles são importados por padrão. Para obter mais informações sobre os tipos de dados e as funções definidas em az e sys, consulte Tipos de dados e funções do Bíceps.