```js
// @noErrors
import { createAttachmentKey, fromAction } from 'svelte/attachments';
```
##
创建附件密钥
> 自 5.29 起可用
创建一个对象键,当对象被扩展到元素上时,该键将被识别为附件,作为使用`{@attach ...}`的编程替代方案。这对于库的作者可能很有用,但在构建应用程序时通常不需要。
```svelte
```
```dts
function createAttachmentKey(): symbol;
```
##
从动作
将 [操作](/docs/svelte/use) 转换为 [附件](/docs/svelte/@attach),保持相同的行为。如果您想在组件上开始使用附件,但已经有由库提供的操作,这很有用。
请注意,第二个参数(如果提供)必须是一个函数,该函数返回要传递给操作函数的参数,而不是参数本身。
```svelte
...
bar)}>...
```
```dts
function fromAction<
E extends EventTarget,
T extends unknown
>(
action:
| Action
| ((element: E, arg: T) => void | ActionReturn),
fn: () => T
): Attachment;
```
```dts
function fromAction(
action:
| Action
| ((element: E) => void | ActionReturn)
): Attachment;
```
##
附件
一个[附件](/docs/svelte/@attach)是一个在元素挂载到 DOM 时运行的函数,并且可选地返回一个在元素稍后移除时被调用的函数。
它可以附加到具有 `#{@attach ...}` 标签的元素上,或者通过扩展一个包含使用 [`createAttachmentKey`](/docs/svelte/svelte-attachments#createAttachmentKey) 创建的属性的对象。
```dts
interface Attachment {/*…*/}
```
```dts
(element: T): void | (() => void);
```