uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 418
Obunachilar
Ma'lumot yo'q24 soatlar
-17 kunlar
-430 kunlar
Postlar arxiv
ToCode
1 419
ืื™ืš ืœืฉืœื•ื— ื”ื•ื“ืขื•ืช ืขื“ื›ื•ืŸ ืž Tools ื‘ Vercel AI SDK ื‘ื“ื•ื’ืžื” ืžื”ืืชืจ ืฉืœ Vercel AI SDK ื”ื ืžืจืื™ื ืื™ืš ืœืงืจื•ื ืœื›ืœื™ื ืžืชื•ืš ื”ืกื•ื›ืŸ ืขื ื”ืงื•ื“ ื”ื‘ื:
import { z } from 'zod';
import { generateText, tool } from 'ai';

const result = await generateText({
  model: yourModel,
  tools: {
    weather: tool({
      description: 'Get the weather in a location',
      parameters: z.object({
        location: z.string().describe('The location to get the weather for'),
      }),
      execute: async ({ location }) => ({
        location,
        temperature: 72 + Math.floor(Math.random() * 21) - 10,
      }),
    }),
  },
  prompt: 'What is the weather in San Francisco?',
});
ื–ื” ืขื•ื‘ื“ ื™ื•ืคื™ ื›ืฉื”ื›ืœื™ ืงื˜ืŸ ื•ื—ื•ื–ืจ ืžื”ืจ, ืื‘ืœ ืื ืื ื—ื ื• ืฆืจื™ื›ื™ื ืžืชื•ืš ื”ืคื•ื ืงืฆื™ื” ืฉืœ ื”ื›ืœื™ ืœื”ืฆื™ื’ ืœืžืฉืชืžืฉ ืขื•ื“ ื”ื•ื“ืขื•ืช ืœื”ืจืื•ืช ื”ืชืงื“ืžื•ืช ืื• ืœืฉืื•ืœ ืื™ืฉื•ืจ ื–ื” ื›ื‘ืจ ืœื ื™ืขื‘ื•ื“. ืื™ืŸ ื‘ืžืžืฉืง ืฉืœ Tools ื’ื™ืฉื” ืœืื•ื‘ื™ืงื˜ ื” Stream. ื•ื›ืžื• ื›ืœ ืคืขื ืฉืื ื™ ืžื‘ืœื” ื™ื•ืชืจ ืžื“ื™ ื–ืžืŸ ื‘ืชื™ืขื•ื“ ืฉืœ ืกืคืจื™ื” ื‘ืฉื‘ื™ืœ ืœืžืฆื•ื ืžื ื’ื ื•ืŸ ืฉื”ื™ื” ืฆืจื™ืš ืœื”ื™ื•ืช ื”ืจื‘ื” ื™ื•ืชืจ ื‘ืจื•ืจ, ืื ื™ ืžืขืœื” ืืช ื”ืคื™ืชืจื•ืŸ ืœื›ืืŸ ื›ื“ื™ ืฉื ื•ื›ืœ ืœื—ื–ื•ืจ ื•ืœื”ื™ื–ื›ืจ ื‘ื• ื‘ืขืชื™ื“. ื‘ืžืงืจื” ืฉืœ Tools ื™ืฉ ื›ืžื” ื ืงื•ื“ื•ืช: 1. ืฆืจื™ืš ืœื™ืฆื•ืจ ืืช ื” Stream ื‘ืฆื•ืจื” ื™ื–ื•ืžื” ืœืคื ื™ ืฉืžืคืขื™ืœื™ื generateText, ื•ืื– ืœื—ื‘ืจ ืืช ื”ืคืœื˜ ืฉืœ generateText ืœ Stream ืฉื™ืฆืจื ื•. 2. ืฆืจื™ืš ืœืฉื™ื ืœื‘ ืฉ Vercel AI SDK ื”ืžืฆื™ืื” ืคืจื•ื˜ื•ืงื•ืœ ื›ื“ื™ ืœื”ืขื‘ื™ืจ metadata ื‘ืฉื™ื—ื”. ื‘ื›ืœ ื”ื•ื“ืขื” ื™ืฉ ืชื—ื™ืœื™ืช ืฉืœ ืกื•ื’ ื”ื”ื•ื“ืขื” ื•ืื—ืจื™ื” ื ืงื•ื“ื•ืชื™ื™ื ื•ืื– ื”ื”ื•ื“ืขื” ืขืฆืžื” ื‘ืชื•ืš ืžืจื›ืื•ืช. ื”ืชื—ื™ืœื™ืช ืœื˜ืงืกื˜ ื”ื™ื ืคืฉื•ื˜ 0. ืœื›ืŸ ื”ื™ื™ื ื• ื™ื›ื•ืœื™ื ืœื›ืชื•ื‘ ืžืฉื”ื• ื›ืžื•:
writer.write('0:"hello"');
ืื‘ืœ ื™ื•ืชืจ ืงืœ ืœื”ืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื” ืžื•ื‘ื ื™ืช ืฉืœื”ื ืฉื ืงืจืืช formatDataStreamPart. ื”ืชื•ืฆืื” ื ืจืื™ืช ื›ืš:
import { openai } from '@ai-sdk/openai';
import { generateId, createDataStreamResponse, streamText, formatDataStreamPart } from 'ai';

import tools from '@/lib/tools';

// Allow streaming responses up to 30 seconds
export const maxDuration = 30;

export async function POST(req: Request) {
  const { messages, data } = await req.json();
  
  // immediately start streaming (solves RAG issues with status, etc.)
  return createDataStreamResponse({
    execute: dataStream => {
      dataStream.write(formatDataStreamPart('text', 'Warming up!ึฟ'));
      dataStream.writeMessageAnnotation({ chunk: 'processing' });
      
      const result = streamText({
        model: openai('gpt-4-turbo'),
        maxSteps: 5,
        tools: tools(jwtToken, dataStream),
        messages,
        onFinish() {
          // message annotation:
          dataStream.writeMessageAnnotation({
            id: generateId(), // e.g. id from saved DB record
            other: 'information',
          });

          // call annotation:
          dataStream.writeData('call completed');
        },
      });

      result.mergeIntoDataStream(dataStream);
    },
    onError: error => {
      // Error messages are masked by default for security reasons.
      // If you want to expose the error message to the client, you can do so here:
      return error instanceof Error ? error.message : String(error);
    },
  });
}
ืขื›ืฉื™ื• ืžืชื•ืš ื›ืœ tool ืืคืฉืจ ืœืงืจื•ื ืœ dataStream.write ื›ื“ื™ ืœื”ื•ืกื™ืฃ ื”ื•ื“ืขื•ืช ืœืฉื™ื—ื”, ืื• ืœื‘ื ื•ืช Workflows ื™ื•ืชืจ ืžื•ืจื›ื‘ื™ื ืขื ืžืกืคืจ ืกื•ื›ื ื™ื ืฉื›ืœ ืื—ื“ ื™ื•ืกื™ืฃ ื”ื•ื“ืขื•ืช ืœืฉื™ื—ื” ืžืชื•ืš generateText ืฉืœื•.

ToCode
1 419
ืงื•ื“ื‘ื™ื™ืก ื™ื“ื™ื“ื•ืชื™ ืœ AI ื“ืžื™ื™ื ื• ืฉื™ืฉ ืœื›ื ืžื›ื•ื ื” ืžื•ืคืœืื” ืฉื™ื›ื•ืœื” ืœืžืžืฉ ืคื™ืฆ'ืจื™ื ื‘ืžื”ื™ืจื•ืช ืขืœ, ืื‘ืœ ื‘ืฉื‘ื™ืœ ืฉื”ื™ื ืชืขื‘ื•ื“ ื”ืงื•ื“ ืฆืจื™ืš ืœื”ื™ื•ืช ื‘ืžื‘ื ื” ืžืกื•ื™ื. ืื”, ื•ื”ืžื›ื•ื ื” ื”ื–ืืช, ื›ืฉื”ื™ื ื›ื•ืชื‘ืช ืงื•ื“ ื—ื“ืฉ ื”ื™ื ืฉื•ื‘ืจืช ืืช ื”ืžื‘ื ื” ืฉื”ื™ื ืฆืจื™ื›ื”. ืงืœ ืœืจืื•ืช ืฉื”ืžื›ื•ื ื” ืขื•ื‘ื“ืช ื›ื™ ื›ืฉืื ื™ ืžื‘ืงืฉ ืžืžื ื” ืœื›ืชื•ื‘ ืคื•ื ืงืฆื™ื™ืช ืคื™ื™ืชื•ืŸ ืฉืกื•ืคืจืช ื›ืžื” ืฉื•ืจื•ืช ื™ืฉ ื‘ืงื•ื‘ืฅ ืื ื™ ืžืงื‘ืœ ืชืฉื•ื‘ื” ื˜ื•ื‘ื”. ื’ื ื›ืฉืื ื™ ืžื‘ืงืฉ ืžืžื ื” ืœื”ื•ืกื™ืฃ ืœืชื•ื›ื ื™ืช ืงืฆืจื” ืงื•ื“ main ืฉืžืคืขื™ืœ ืคื•ื ืงืฆื™ื” ื‘ืœื•ืœืื” ืื ื™ ืžืงื‘ืœ ืชืฉื•ื‘ื” ื˜ื•ื‘ื”. ืืคื™ืœื• ื‘ืคืจื•ื™ืงื˜ื™ื ื’ื“ื•ืœื™ื ืื ืื ื™ ืจืง ืžืขืชื™ืง ืคื•ื ืงืฆื™ื” ืงื˜ื ื” ืœืชื•ืš ื”ืžื›ื•ื ื” ื•ืžื‘ืงืฉ ืฉื™ื ื•ื™ ืื ื™ ืžืงื‘ืœ ืชืฉื•ื‘ื” ื˜ื•ื‘ื”. ืžื” ื”ื‘ืขื™ื•ืช ื”ื™ื™ื—ื•ื“ื™ื•ืช ืœืคืจื•ื™ืงื˜ื™ื ื’ื“ื•ืœื™ื ืฉื’ื•ืจืžื™ื ืœืžื›ื•ื ื” ืœื”ื™ืฉื‘ืจ? ื”ื ื” ืจืฉื™ืžื” ืงื˜ื ื” ืฉืœ ื“ื‘ืจื™ื ืฉืชื™ืงื ืชื™ ื”ื™ื•ื: 1. ืฉืœื•ืฉ ื“ืจื›ื™ื ืœืขืฉื•ืช X, ืื‘ืœ ืจืง ืื—ืช ืขื•ื‘ื“ืช. 2. ืฉืชื™ ื˜ื‘ืœืื•ืช ื‘ DB ืขื ืฉืžื•ืช ื“ื•ืžื™ื ืฉืžื—ื–ื™ืงื•ืช ืžื™ื“ืข ืฉืงืฉื•ืจ ืœื“ื‘ืจื™ื ืื—ืจื™ื ืœื’ืžืจื™. 3. ืกืงืจื™ืคื˜ ืฉืžืจื™ืฅ ืืช ื”ืคืจื•ื™ืงื˜ ืื‘ืœ ืœื ืืช ื›ืœ ืจื›ื™ื‘ื™ ื”ืคืจื•ื™ืงื˜ (ื›ื™ ื™ืฉ ืจื›ื™ื‘ ืฉืืฃ ืื—ื“ ืœื ืฆืจื™ืš ื•ืžื™ ืฉืฆืจื™ืš ื™ื•ื“ืข ืœื”ืจื™ืฅ ืื•ืชื• ืœื‘ื“). 4. ื”ืชืงื ื” ืฉื“ื•ืจืฉืช ืฉื™ื ื•ื™ ื™ื“ื ื™ ื‘ DB ื‘ืืžืฆืข ื”ื“ืจืš. 5. ืฉืคื” ืคื ื™ืžื™ืช ื•ืœื ืžืชื•ืขื“ืช ืฉืœ ืฆื•ื•ืช ื”ืคื™ืชื•ื—. ืืœื” ืœื ื“ื‘ืจื™ื ื’ื“ื•ืœื™ื ื•ืืคื™ืœื• ืœื ื“ื‘ืจื™ื ืฉืงืฉื•ืจื™ื ืœืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ื”ืงื•ื“. ื•ื›ืฉื”ืžืขืจื›ืช ืžืกื•ื“ืจืช, ื”ื‘ื“ื™ืงื•ืช ืขื•ื‘ื“ื•ืช ื•ื”ืฉืคื” ื”ืคื ื™ืžื™ืช ืžืชื•ืขื“ืช ื”ืชื•ืฆืื” ื™ื›ื•ืœื” ืœื”ื™ื•ืช ืขื•ืฆืจืช ื ืฉื™ืžื”.

ToCode
1 419
ื‘ืŸ ื”ืื“ื ืฉื‘ืœื•ืค ืฉืœื•ืฉ ืฉื™ื—ื•ืช ืขื ืงืœื•ื“- 1. ื›ืชื•ื‘ ืงื•ื“ ืคื™ื™ืชื•ืŸ ืฉืžืชื—ื‘ืจ ืœื’ื™ื˜ื”ืื‘ ื•ืžืืคืฉืจ ืœื™ ืœื™ืฆื•ืจ Issue ื—ื“ืฉ, ืœื”ืฆื™ื’ ืืช ื” Issues ื”ืงื™ื™ืžื™ื ื•ืœืกื’ื•ืจ Issue. ืงืœื•ื“ ืขื•ื ื” ืขื ืงืœืืก ื‘ืฉื GitHubIssuesManager 2. ืœืžื” ื‘ื—ืจืช ืœื›ืชื•ื‘ ืงืœืืก? ื”ืฆื’ ื™ืชืจื•ื ื•ืช ื•ื—ืกืจื•ื ื•ืช ืฉืœ ื™ืฆื™ืจืช ืงืœืืก ืžื•ืœ ื›ืชื™ื‘ืช ืคื•ื ืงืฆื™ื•ืช ื•ื”ืžืœืฅ ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื”. ืงืœื•ื“ ืžืกื‘ื™ืจ ืฉื‘ืืžืช ื’ื™ืฉื” ืžื‘ื•ืกืกืช ืคื•ื ืงืฆื™ื•ืช ืชื”ื™ื” ื˜ื•ื‘ื” ื‘ื”ืจื‘ื”. ื”ื•ื ืžืืจื’ืŸ ืžื—ื“ืฉ ืืช ื”ืงื•ื“ ืขื Named Tuple ื‘ืฉื‘ื™ืœ ืœืฉืžื•ืจ ืืช ื›ืœ ื”ืคืจืžื˜ืจื™ื ืฉืœ ื”ื’ื™ืฉื” ื•ืคื•ื ืงืฆื™ื•ืช ื ืคืจื“ื•ืช ืœื›ืœ ืคืขื•ืœื”:
def example_usage():
    """Example of how to use the functions programmatically."""
    config = create_config("your_token", "owner", "repo")
    
    # Open an issue
    issue = open_issue(config, "Bug found", "Description here", labels=["bug"])
    
    # List all open issues
    issues = list_issues(config, state="open")
    
    # Close an issue
    if issues:
        close_issue(config, issues[0]["number"], "Fixed!")
3. ื•ืื™ื–ื” ืžืฉืชื™ ื”ื’ื™ืฉื•ืช ืชื”ื™ื” ืงืœื” ื™ื•ืชืจ ืขื‘ื•ืจ AI ืœืงืจื•ื ื•ืœืชื—ื–ืง? ืงืœื•ื“ ืœื ืžืชื‘ืœื‘ืœ ื•ืžืกื‘ื™ืจ ืฉื’ื™ืฉื” ืžื‘ื•ืกืกืช ืคื•ื ืงืฆื™ื•ืช ืชื”ื™ื” ืงืœื” ื™ื•ืชืจ ืœื‘ื ื™ ืื“ื ื•ืœ AI ืœืงืจื™ืื” ื•ืชื—ื–ื•ืงื”. ื”ื•ื ืžืกื‘ื™ืจ ืฉื‘ื’ื™ืฉืช ื”ืคื•ื ืงืฆื™ื•ืช ื”ืงื•ื“ ื™ื•ืชืจ ืžืคื•ืจืฉ, ื‘ืจื•ืจ ืžื” ื”ืกื˜ื™ื™ื˜ ื•ืžื” ืฆืจื™ืš ืœื”ืคืขื™ืœ ืžืชื™. ื•ื›ืžื•ื‘ืŸ ืฉื’ื ื”ืชืฉื•ื‘ื” ื”ื–ืืช ืœื ื ื›ื•ื ื” ืชืžื™ื“. ื™ื™ืชื›ืŸ ืฉื‘ืขืชื™ื“ ื›ืœื™ ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช ื™ืฆืœื™ื—ื• ืœื—ืงื•ืจ ื˜ื•ื‘ ื™ื•ืชืจ ืืช ืกื‘ื™ื‘ืชื, ืœืœืžื•ื“ ื™ื•ืชืจ ืœืขื•ืžืง ืขืœ ื”ืžืขืจื›ืช, ื”ืžืคืชื—ื™ื, ื”ืฆืจื›ื™ื, ื”ืฉื™ื ื•ื™ื™ื ืฉื”ื™ื• ื•ืฉืขื•ื“ ื™ื”ื™ื• ื•ื™ื“ืขื• ืœื”ืžืœื™ืฅ ื•ื’ื ืœื‘ื—ื•ืจ ื‘ื“ืจืš ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ ืœืฆื•ืจืš ืชื—ื–ื•ืงื” ืงืœื” ื‘ืขืชื™ื“. ืื ื—ื ื• ืขื“ื™ื™ืŸ ืžืื•ื“ ืจื—ื•ืงื™ื ืžืฉื. ื”ื”ื•ื•ื” ืฉืœ AI ื”ื•ื ืžืœื”ื™ื‘. ืชื•ืš ืžืกืคืจ ื“ืงื•ืช ืงื™ื‘ืœืชื™ ืืช ืคื•ื ืงืฆื™ื•ืช ื”ืคื™ื™ืชื•ืŸ ืฉืจืฆื™ืชื™ ืœืขื‘ื•ื“ื” ืขื ื” API ืฉืœ ื’ื™ื˜ื”ืื‘ ื›ื•ืœืœ ืžื™ืžื•ืฉ ืžืœื ืฉืœ ืžื ื’ื ื•ืŸ ื”ื”ืชื—ื‘ืจื•ืช ืขื oauth ื•ื™ืฆื™ืจืช ื˜ื•ืงืŸ ื“ืจืš ื”ื“ืคื“ืคืŸ, ื‘ืœื™ ืฉื™ืžื•ืฉ ื‘ืกืคืจื™ื•ืช ื—ื™ืฆื•ื ื™ื•ืช ื•ืขื ื”ื’ื“ืจืช ืžืžืฉืงื™ื ืžืœืื” ื‘ pydantic. ืื™ืŸ ืฉื•ื ืขื•ืœื ื‘ื• ื”ื™ื™ืชื™ ื›ื•ืชื‘ ืืช ื–ื” ืžื”ืจ ื™ื•ืชืจ ื‘ืขืฆืžื™ ืžืืคืก. ื•ื”ื”ื•ื•ื” ืฉืœ AI ื’ื ื“ื•ืจืฉ ื‘ืŸ ืื“ื ื‘ืœื•ืค. ื”ื”ื•ื•ื” ืฉืœ AI ื“ื•ืจืฉ ืฉืื ื—ื ื• ื ื‘ื™ืŸ ืžื” ืฉ AI ืœื ืžืชืงืจื‘ ืœืœื”ื‘ื™ืŸ - ืžื” ื”ืฆืจื›ื™ื ื”ืืžื™ืชื™ื™ื ืฉืœ ื”ืžืขืจื›ืช, ืžื”ื™ ืฉื™ื˜ืช ื”ืขื‘ื•ื“ื” ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ ืขื‘ื•ืจ ื”ืžืขืจื›ืช ืฉืœื ื• ื•ืื™ืš ืœื›ืชื•ื‘ ืงื•ื“ ืฉื™ื”ื™ื” ื ื™ืชืŸ ืœืชื—ื–ื•ืงื” ืฉื ื™ื ืงื“ื™ืžื”.

ToCode
1 419
ืื ื™ ืืžื•ืจ ืœืงืจื•ื ืขื›ืฉื™ื• ืžื–ื”ื™ ืงื•ืžื™ื˜? ืชืœืžื™ื“ ื‘ืงื•ืจืก ื’ื™ื˜ ืฉื•ืืœ - ืื ื™ืฉ ืœื™ ื›ืœื™ ื’ืจืคื™ ืœืขื‘ื•ื“ื” ืขื ื’ื™ื˜ ื•ืื ื™ ืœื•ื—ืฅ ืฉื ืขืœ ื›ืœ ื”ื›ืคืชื•ืจื™ื ื”ื ื›ื•ื ื™ื, ืื ื™ ืฆืจื™ืš ืœื“ืขืช ืžื” ื–ื” ืžื–ื”ื” ืงื•ืžื™ื˜? ืื ื™ ืฆืจื™ืš ืœื‘ื“ื•ืง ืžื” ื”ืžื–ื”ื” ืงื•ืžื™ื˜ ืฉืœื™? ืื™ ืคืขื ืืชื” ืžื“ื‘ืจ ืขื ืื ืฉื™ื ืื—ืจื™ื ืขืœ ืžื–ื”ื™ ืงื•ืžื™ื˜? ื›ืŸ. ื›ืฉื“ื‘ืจื™ื ื ืฉื‘ืจื™ื. ืื ืื ื™ ืขื•ื‘ื“ ืขื ืขื•ื“ ืื ืฉื™ื ืขืœ ืคืจื•ื™ืงื˜ ื•ืฉื ื™ื ื• ืจื•ืื™ื ื“ื‘ืจื™ื ืฉื•ื ื™ื ืœืžืจื•ืช ืฉืื ื—ื ื• ืžืขื•ื“ื›ื ื™ื ืขืœ ืื•ืชื• ื‘ืจืื ืฅ', ื›ื“ืื™ ืฉื ื“ืข ืœืงืจื•ื ืืช ืžื–ื”ื” ื”ืงื•ืžื™ื˜ ื•ืœื”ืฉื•ื•ืช. ืื ื”ื‘ืจืื ืฅ ืฉืœื™ ื ืžื—ืง, ืื ื“ื—ืคืชื™ ืชื•ืฆืื” ืฉืœ ืจื™ื‘ื™ื™ืก ื‘ืœื™ ืœืฉืื•ืœ, ืื ืžื™ืฉื”ื• ืฉื™ื ื” ืืช ื”ืฉื ืฉืœ ื”ื‘ืจืื ืฅ ื‘ืœื™ ืœื”ื’ื™ื“ ... ืœืคืขืžื™ื ื“ื‘ืจื™ื ื™ืžืฉื™ื›ื• ืœืขื‘ื•ื“ ื•ืœืคืขืžื™ื ื ืฆื˜ืจืš ืœื”ืจื™ื ืืช ืžื›ืกื” ื”ืžื ื•ืข ื•ืœื—ื‘ืจ ืžื—ื“ืฉ ืืช ื”ื—ื•ื˜ื™ื. ื•ืื ื–ื” ื—ืฉื•ื‘ ื‘ืžื–ื”ื™ ืงื•ืžื™ื˜ ื‘ื’ื™ื˜ ืื™ืŸ ืกื™ื‘ื” ืœื—ืฉื•ื‘ ืฉืœื ื ืฆื˜ืจืš ืœื“ืขืช ืœื”ืกืชื›ืœ ืžืชื—ืช ืœืžื›ืกื” ื”ืžื ื•ืข ื›ืฉืื ื—ื ื• ื›ื•ืชื‘ื™ื ืงื•ื“ ืขื AI. ื’ื, ื•ืื•ืœื™ ื‘ืžื™ื•ื—ื“, ื›ืฉ 90% ื‘ืขื•ืœื ื™ื™ื›ืชื‘ ืขืœ ื™ื“ื™ AI.

ToCode
1 419
ื•ืื– ื–ื” ืขื‘ื“ ื”ืชื—ืœืชื™ ืœืฉืžื•ืข ืืช ื”ืจืื™ื•ืŸ ืฉืœ DHH ืืฆืœ ืœืงืก ืคืจื™ื“ืžืŸ. ืื—ื“ ื”ื“ื‘ืจื™ื ื”ืจืืฉื•ื ื™ื ืฉืขื•ืœื™ื ืฉื ื”ื™ื” ื”ืชื”ืœื™ืš ืฉ DHH ืขื‘ืจ ืขื“ ืฉื”ื’ื™ืข ืœืชื›ื ื•ืช, ืžื”ื ืกื™ื•ื ื•ืช ื”ืจืืฉื•ื ื™ื ื‘ื’ื™ืœ 6 ื•ืขื“ ืคื™ืชื•ื— ื“ืฃ HTML. ื‘ืคืขื ื”ืจืืฉื•ื ื” ื”ื•ื ื ื™ืกื” ืœื”ืขืชื™ืง ืงื•ื“ ืฉืœ ืžืฉื—ืงื™ื ืžืžื’ื–ื™ื ื™ื (ื›ืŸ ืขืฉื• ืคืขื ื“ื‘ืจื™ื ื›ืืœื”), ืื‘ืœ ื–ื” ืœื ืขื‘ื“ ื•ื”ื•ื ืœื ื”ื‘ื™ืŸ ืžื” ื”ืžื—ืฉื‘ ืจื•ืฆื” ืžืžื ื•. ื‘ืคืขื ื”ืฉื ื™ื” ื”ื•ื ื ื™ืกื” ืœืœืžื•ื“ ืฉืคื” ื‘ืฉื Easy Amos, ืื‘ืœ ื’ื ืฉื ืืคื™ืœื• ื“ื‘ืจื™ื ื‘ืกื™ืกื™ื™ื ืœื ืขื‘ื“ื• ื•ื”ื•ื ืœื ื”ื‘ื™ืŸ ืืช ื”ืฉื’ื™ืื•ืช. ื”ื•ื ื”ื™ื” ืžื•ื›ืŸ ืœื”ืชื™ื™ืืฉ ื›ื™ ื—ืฉื‘ ืฉื”ื•ื ืœื ื—ื›ื ืžืกืคื™ืง ื‘ืฉื‘ื™ืœ ืœืชื›ื ืช. ื”"ืงืœื™ืง" ืฉืœื• ืขื ืชื›ื ื•ืช ื”ื™ื” ืจืง ื›ืฉืจืื” ืœืจืืฉื•ื ื” HTML ื•ืคืชืื•ื ื›ืœ ืžื” ืฉื”ื•ื ื›ืชื‘ ืขื‘ื“. "ื•ื•ืื• ืื ื™ ื™ื›ื•ืœ ืœื’ืจื•ื ืœื˜ืงืกื˜ ืœื”ื‘ื”ื‘" ื”ื™ื” ืื™ืš ืฉื”ื•ื ืชื™ืืจ ืืช ื–ื” ื‘ืจืื™ื•ืŸ. ืžืกืชื‘ืจ ืฉืœืคื—ื•ืช ืขื‘ื•ืจ DHH, ื•ืื ื™ ื‘ื˜ื•ื— ืฉืขื‘ื•ืจ ืจื‘ื™ื ื ื•ืกืคื™ื, ื”ื›ื™ืฃ ืœื ืงืœืงืœ ืืช ื”ืจืฆื•ืŸ ืœืœืžื•ื“ ืืœื ืœื”ื™ืคืš - ืกื‘ื™ื‘ื” ืœื™ืžื•ื“ื™ืช ืฉื‘ื” ื›ืœ ื“ื‘ืจ ืขื•ื‘ื“ ื™ื•ืฆืจืช ืืช ื”ืจืฆื•ืŸ ืœื”ื‘ื™ืŸ. ื” HTML ืฉื’ืจื ืœ DHH ืœืจืฆื•ืช ืœื›ืชื•ื‘ ืงื•ื“ ื”ื•ื ื” Vibe Coding ืฉืœ ื”ื™ื•ื, ื•ืื ื™ ื“ื™ ื‘ื˜ื•ื— ืฉื›ื›ืœ ืฉื ื—ืฉื•ืฃ ื™ืœื“ื™ื ืžื’ื™ืœ ืฆืขื™ืจ ื™ื•ืชืจ ืœื›ืœื™ ื‘ื ื™ื™ืช ืžื•ืฆืจื™ื ืžื‘ื•ืกืกื™ AI ื›ืš ื ืฉืคืจ ืืช ื”ื‘ื™ื˜ื—ื•ืŸ ื”ืขืฆืžื™ ื•ื”ืžื•ื˜ื™ื‘ืฆื™ื” ืฉืœื”ื.

ToCode
1 419
ืกืคื™ืจืช ืฉื•ืจื•ืช ื‘ืงื•ื‘ืฅ ื‘ืคื™ื™ืชื•ืŸ ื”ืกื™ืคื•ืจ ื”ื™ื•ื ืžืชื—ื™ืœ ื›ืฉื‘ื™ืงืฉืชื™ ืž ChatGPT ืœื”ื“ืคื™ืก ืคื•ื ืงืฆื™ื” ืฉืกื•ืคืจืช ื›ืžื” ืฉื•ืจื•ืช ื™ืฉ ื‘ืงื•ื‘ืฅ:
def count_lines(filepath):
    with open(filepath, 'r') as f:
        return sum(1 for _ in f)
ืื‘ืœ - ืื™ืš ื–ื” ืขื•ื‘ื“? ื‘ื•ืื• ื ืคืจืง ืืช ื”ืงื•ื“ ื™ื—ื“. ื”ืคืงื•ื“ื” with ืื—ืจืื™ืช ืขืœ ื‘ื™ืฆื•ืข ืคืขื•ืœื” ืฉืžืงืฆื” ืžืฉืื‘ื™ื ื•ืคืขื•ืœื” ืื—ืจืช ื‘ืกื™ื•ื ืœืฉื—ืจื•ืจ ื”ืžืฉืื‘ื™ื. ืคืงื•ื“ืช with ืฆืจื™ื›ื” ืœืงื‘ืœ ืื•ื‘ื™ืงื˜ ืฉื™ืฉ ืœื• ืคื•ื ืงืฆื™ื™ืช ื”ืชื—ืœื” ื•ืคื•ื ืงืฆื™ื™ืช ืกื™ื•ื, ื•ื–ืืช with ืฉืื—ืจืื™ืช ืขืœ ื”ืคืขืœืช ืคื•ื ืงืฆื™ื•ืช ืืœื”. ื ืชื‘ื•ื ืŸ ื‘ open:
>>> open('/etc/passwd', 'r')
<_io.TextIOWrapper name='/etc/passwd' mode='r' encoding='UTF-8'>
ืคืงื•ื“ืช open ืžื—ื–ื™ืจื” TextIOWrapper. ืฉืชื™ ืคื•ื ืงืฆื™ื•ืช ื”ืขื˜ื™ืคื” ืฉืœื• ื”ืŸ:
>>> f.__enter__
<built-in method __enter__ of _io.TextIOWrapper object at 0x100e879f0>
ื•:
>>> f.__exit__
<built-in method __exit__ of _io.TextIOWrapper object at 0x100e879f0>
ืคืงื•ื“ืช ื” __exit__ ืื—ืจืื™ืช ืขืœ ืกื’ื™ืจืช ื”ืงื•ื‘ืฅ ื•ื”ื™ื ืžื•ืคืขืœืช ืื•ื˜ื•ืžื˜ื™ืช ืขืœ ื™ื“ื™ ืคืงื•ื“ืช ื” with ื‘ืกื™ื•ื ื”ื‘ืœื•ืง. ืื ื™ ื™ื›ื•ืœ ืœื”ืคืขื™ืœ ืื•ืชื” ื™ื“ื ื™ืช ื›ื“ื™ ืœื”ืฉืชื›ื ืข ืฉื”ืงื•ื‘ืฅ ื ืกื’ืจ:
>>> f=open('/etc/passwd', 'r')
>>> f.__exit__()
>>> f.read()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file.
ื’ื ื”ืฉื•ืจื” ื”ืฉืœื™ืฉื™ืช ื‘ืงื•ื“ ืžืกืชื™ืจื” ื”ืจื‘ื” ื”ืชื ื”ื’ื•ืช ืžื•ื‘ื ื™ืช ืฉืœ ื”ืฉืคื”. ื ืชื—ื™ืœ ืขื:
>>> (1 for _ in f)
<generator object <genexpr> at 0x101013ed0>
ืื ืืžืจื ื• ืฉ f ื”ื•ื TextIOWrapper, ืื– ืคืงื•ื“ืช for ... in f ื”ื™ื ืคืงื•ื“ืช ื™ืฆื™ืจืช ื’ื ืจื˜ื•ืจ. ื”ื™ื ืขื“ื™ื™ืŸ ืœื ืžืคืขื™ืœื” ืฉื•ื ืœื•ืœืื” ืขืœ ื”ืงื•ื‘ืฅ ืืœื ืจืง ืžื—ื–ื™ืจื” ืื•ื‘ื™ืงื˜ ืฉื™ื•ื“ืข "ืœืขืฉื•ืช ืžืฉื”ื•" ืขื ื”ืฉื•ืจื•ืช ืฉื‘ืงื•ื‘ืฅ:
>>> f=open('/etc/passwd', 'r')
>>> g=(1 for _ in f)
>>> next(g)
1
>>> next(g)
1
>>> next(g)
1
ื›ืœ ืงืจื™ืื” ืœ next ืขืœ ื”ื’ื ืจื˜ื•ืจ ืžื‘ืฆืขืช ืื™ื˜ืจืฆื™ื” ื‘ื•ื“ื“ืช ืฉืœ ื”ืื•ื‘ื™ืงื˜. ื‘ืžืงืจื” ืฉืœ TextIOWrapper, ืื™ื˜ืจืฆื™ื” ื‘ื•ื“ื“ืช ื”ื™ื ืงืจื™ืื” ืฉืœ ืžื™ื“ืข ืžื”ืงื•ื‘ืฅ ืขื“ ืœื’ื•ื“ืœ ื”ื—ื•ืฆืฅ ื”ืžืงืกื™ืžืœื™ (ืžื•ื’ื“ืจ ื‘ io.DEFAULT_BUFFER_SIZE), ื—ื™ืคื•ืฉ ื”ืฉื•ืจื” ื”ื‘ืื” ื•ื”ื—ื–ืจืช ืื•ืชื” ื”ืฉื•ืจื”. ื”ื’ื ืจื˜ื•ืจ ืขื•ื˜ืฃ ืืช ื”ื”ืชื ื”ื’ื•ืช ื”ื–ืืช ื•ืžื—ื–ื™ืจ ืžืฉื”ื• ืื—ืจ ื‘ืžืงื•ื ื”ืฉื•ืจื”. ื ืชื‘ื•ื ืŸ ืจื’ืข ื‘ื’ื ืจื˜ื•ืจ ื”ืคืฉื•ื˜ ื™ื•ืชืจ:
>>> g=(line for line in f)
>>> next(g)
'# Note that this file is consulted directly only when the system is running\n'
>>> next(g)
'# in single-user mode.  At other times this information is provided by\n'
>>> next(g)
'# Open Directory.\n'
ื”ื’ื ืจื˜ื•ืจ (line for line in f) ืžื—ื–ื™ืจ ืืช ืขืจืš ื”ืžืฉืชื ื” line ื‘ื›ืœ ืื™ื˜ืจืฆื™ื”. ื‘ืื•ืชื• ืื•ืคืŸ ื”ื’ื ืจื˜ื•ืจ (1 for line in f) ืžื—ื–ื™ืจ ืืช ื”ืขืจืš 1 ื‘ื›ืœ ืื™ื˜ืจืฆื™ื” ื•ืžืชืขืœื ืžื”ืžืฉืชื ื” line. ื•ื‘ื’ืœืœ ืฉืื ื—ื ื• ืœื ืžืชื™ื—ืกื™ื ืœืžืฉืชื ื” ื”ืœื•ืœืื” ื”ืจื‘ื” ืื ืฉื™ื ืžืขื“ื™ืคื™ื ืœืงืจื•ื ืœื• ื‘ืฉื _, ืคืฉื•ื˜ ื›ื“ื™ ืฉื ื“ืข ืฉืื ื—ื ื• ืœื ืžืฉืชืžืฉื™ื ื‘ืขืจืš ืฉืœื•. ื”ืฉื•ืจื” ื”ืžืœืื”:
return sum(1 for _ in f)
ืžืคืขื™ืœื” ืืช sum ืขืœ ื’ื ืจื˜ื•ืจ. ื–ื” ืžืขื ื™ื™ืŸ! ืื ื—ื ื• ืจื’ื™ืœื™ื ืœื”ืคืขื™ืœ sum ืขืœ ืจืฉื™ืžื•ืช:
>>> sum([10, 20, 30, 40])
100
ื›ืฉืžืคืขื™ืœื™ื sum ืขืœ ื’ื ืจื˜ื•ืจ ืคื™ื™ืชื•ืŸ ืœื ื”ื•ืคืš ืื•ืชื• ืœืจืฉื™ืžื” ืืœื ื™ื•ื“ืข ืœืจื•ืฅ ื‘ืœื•ืœืื” ื•ืœื”ื•ืกื™ืฃ ืœืžื•ื ื” ื›ืœ ืคืขื ืืช ื”ืขืจืš ื”ื‘ื ืžื”ื’ื ืจื˜ื•ืจ. ื–ื” ื“ื•ืžื” ืœืœื•ืœืื” ื”ื‘ืื”:
>>> f=open('/etc/passwd', 'r')
>>> g=(1 for line in f)
>>> line_count = 0
>>> for value in g:
...     line_count += 1
...
>>> line_count
140
ืœืžืขืฉื” ืื ื”ื™ื™ื ื• ื›ื•ืชื‘ื™ื ืœื•ืœืื” ื›ื ืจืื” ืฉืœื ื”ื™ื™ื ื• ืžื’ื“ื™ืจื™ื ืืช ื”ื’ื ืจื˜ื•ืจ ื•ืžืจืืฉ ื›ื•ืชื‘ื™ื ืœื•ืœืื” ื›ื–ืืช:
def count_lines(filepath):
    with open(filepath, 'r') as f:
        line_count = 0
        for line in f:
            line_count += 1
        return line_count
ื”ื’ื ืจื˜ื•ืจ ืืคืฉืจ ืœืืจื’ืŸ ืžื—ื“ืฉ ืืช ื”ืžื‘ื ื” ื‘ืฆื•ืจื” ืฉื™ื•ืชืจ ืžืชืื™ืžื” ืœ sum ื•ื›ืš ื”ืฆืœื—ื ื• ืœื›ืชื•ื‘:
def count_lines(filepath):
    with open(filepath, 'r') as f:
        return sum(1 for _ in f)
ื›ื™ ื”ืื™ื˜ืจืฆื™ื” ืžื‘ื•ืฆืขืช ื‘ืชื•ืš ื”ืคื•ื ืงืฆื™ื” sum. ืฉื•ืจื” ืชื—ืชื•ื ื” - ื›ืŸ ืืคืฉืจ ืœืขืฆื•ืจ ืื—ืจื™ ืฉืงื™ื‘ืœื ื• ืž ChatGPT ืืช ื”ืคื•ื ืงืฆื™ื”. ื™ื•ืชืจ ืžื•ืžืœืฅ ืœื ืฆืœ ืืช ื”ื›ืœื™ ื•ืœืคืจืง ืืช ื”ืงื•ื“ ืœืฉื•ืจื•ืช ื•ืœืคืขื•ืœื•ืช ื”ื‘ืกื™ืกื™ื•ืช ืฉืœื• ื•ืœื•ื•ื“ื ืฉืื ื—ื ื• ืžื‘ื™ื ื™ื ื›ืœ ื“ื‘ืจ ืฉื›ืชื•ื‘ ืฉื. ื›ืœื™ AI ืžืชื’ืžืœื™ื ื™ื“ืข ื•ื ื™ืกื™ื•ืŸ ื•ื”ื‘ื ื” ืฉืœ ื”ืžื ื’ื ื•ื ื™ื ื”ื‘ืกื™ืกื™ื™ื ืฉืœ ื”ืฉืคื” ื”ื™ื ืœื ื‘ื–ื‘ื•ื– ื–ืžืŸ ืืœื ื”ื™ื ื”ืžืคืชื— ืœื—ืกื›ื•ืŸ ืžืฉืžืขื•ืชื™ ื‘ื”ืจื‘ื” ื‘ื›ืœ ืงื•ื“ ื“ื•ืžื” ืฉื ื™ื™ืฆืจ ื‘ืขืชื™ื“.

ToCode
1 419
ื™ื‘ื•ื ืžื•ืฉื”ื” ื‘ื˜ื™ื™ืคืกืงืจื™ืคื˜ 5.9 ื”ื•ื ืื—ื“ ื”ืฉื™ืคื•ืจื™ื ื”ืžืœื”ื™ื‘ื™ื ื‘ืฉืคื” ื•ื ื›ื•ืŸ ื–ื” ืœื ืžืžืฉ ื˜ื™ื™ืคืกืงืจื™ืคื˜ ืืœื ืฉื™ืคื•ืจ ื‘ JavaScript, ืื‘ืœ ื›ื‘ืจ ืžื–ืžืŸ ืฉื›ื—ื ื• ืžื” ื”ื”ื‘ื“ืœ. ืขืœ ืžื” ืื ื—ื ื• ืžื“ื‘ืจื™ื? ื ืชื—ื™ืœ ื‘ืชื™ืื•ืจ ื”ื‘ืขื™ื”: 1. ืขื ื”ืฉื ื™ื ืงื•ื“ JavaScript ืจืง ืžืชืืจืš. 2. ืœื ืจืง ืฉืงืฉื” ืœื”ื•ืจื™ื“ ืงื•ื“ JavaScript ืืจื•ืš ืžื”ืฉืจืช (ื›ื™ ื”ืงื•ื‘ืฅ ื™ื•ืชืจ ื’ื“ื•ืœ) ืืœื ืฉื”ืจืฆื” ื•ืคื™ืขื ื•ื— ืฉืœ ืงื•ื“ ื›ื–ื” ืžื›ื‘ื™ื“ื™ื ืขืœ ื”ื“ืคื“ืคืŸ. 3. ืื—ืจื™ ืฉื›ืชื‘ืช ืืช ื”ืงื•ื“ ืงืฉื” ืœื”ื—ืœื™ืฃ ืž import ืจื’ื™ืœ ืœ import ื“ื™ื ืžื™, ื‘ื’ืœืœ ืฉื–ื” ื™ื›ืจื™ื— ืื•ืชืš ืœืฉื ื•ืช ืืช ื›ืœ ืฉืจืฉืจืช ื”ืงืจื™ืื•ืช ืœืงืจื™ืื•ืช ืขื await. ื•ื›ืืŸ ื ื›ื ืก ื”ื—ื‘ืจ ืฉืœื ื• import defer. ืคืงื•ื“ื” ื–ืืช ื˜ื•ืขื ืช ืžื•ื“ื•ืœ ืื‘ืœ ืœื ืžื‘ืฆืขืช ืื•ืชื• ื•ื›ืš ื—ื•ืกื›ืช ืœื“ืคื“ืคืŸ ืืช ื–ืžืŸ ื”ืจื™ืฆื” ืฉืœ ืงื•ื‘ืฅ ื” JavaScript ื”ื’ื“ื•ืœ. ื–ืืช ื”ื“ื•ื’ืžื” ืžื“ืฃ ื”ืชื™ืขื•ื“ - ืชื—ื™ืœื” ืงื•ื‘ืฅ ื”ืžื•ื“ื•ืœ:
Copy
// ./some-feature.ts
initializationWithSideEffects();

function initializationWithSideEffects() {
  // ...
  specialConstant = 42;

  console.log("Side effects have occurred!");
}

export let specialConstant: number;
ื•ื”ืงื•ื“ ืฉืžืฉืชืžืฉ ื‘ื•:
import defer * as feature from "./some-feature.js";

// No side effects have occurred yet

// ...

// As soon as \specialConstant\ is accessed, the contents of the \feature\
// module are run and side effects have taken place.
console.log(feature.specialConstant); // 42
ืœืžืจื•ืช ืฉื”ืคื•ื ืงืฆื™ื” ืžื•ืคืขืœืช ื‘ืงื•ื“ ื”ืจืืฉื™ ืฉืœ some-feature.ts, ื”ื™ื ืœื ืชื•ืคืขืœ ืขื“ ืฉืžื™ืฉื”ื• ื‘ืืžืช ื™ื™ื’ืฉ ืœืขืจืš ื•ื™ื“ืคื™ืก ืื•ืชื•. ืื ื”ืฉื•ืจื” ื”ืื—ืจื•ื ื” ื‘ืงื•ื‘ืฅ ื”ืฉื ื™ ื”ื™ืชื” ืžื•ืชื ื™ืช ืื• ืœื ืžื•ืคืขืœืช ืžื›ืœ ืกื™ื‘ื” ืฉื”ื™ื, ื’ื ื’ื•ืฃ ื”ืžื•ื“ื•ืœ some-feature.ts ืœื ื”ื™ื” ืžื•ืคืขืœ. ื›ืžื•ื‘ืŸ ืฉื”ื™ื™ื ื• ื™ื›ื•ืœื™ื ืœื”ื’ื™ืข ืœืื•ืชื” ืชื•ืฆืื” ืขื await import, ืื‘ืœ ื–ื” ื‘ื“ื™ื•ืง ื”ื™ื•ืคื™: ื”ืคืจื“ื” ื‘ื™ืŸ ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ื‘ื™ืฆื•ืขื™ื ืœืกืžื ื˜ื™ืงื” ืฉืœ await ื• async. ื“ืฃ ื”ืคืจืกื•ื ื”ืžืœื ืฉืœ ื˜ื™ื™ืคืกืงืจื™ืคื˜ 5.9 ื‘ื˜ื ื–ืžื™ืŸ ื›ืืŸ ืœืกืงืจื ื™ื: https://devblogs.microsoft.com/typescript/announcing-typescript-5-9-beta/

ToCode
1 419
ื™ื‘ื•ื ืžื•ืฉื”ื” ื‘ื˜ื™ื™ืคืกืงืจื™ืคื˜ 5.9 ื”ื•ื ืื—ื“ ื”ืฉื™ืคื•ืจื™ื ื”ืžืœื”ื™ื‘ื™ื ื‘ืฉืคื” ื•ื ื›ื•ืŸ ื–ื” ืœื ืžืžืฉ ื˜ื™ื™ืคืกืงืจื™ืคื˜ ืืœื ืฉื™ืคื•ืจ ื‘ JavaScript, ืื‘ืœ ื›ื‘ืจ ืžื–ืžืŸ ืฉื›ื—ื ื• ืžื” ื”ื”ื‘ื“ืœ. ืขืœ ืžื” ืื ื—ื ื• ืžื“ื‘ืจื™ื? ื ืชื—ื™ืœ ื‘ืชื™ืื•ืจ ื”ื‘ืขื™ื”: 1. ืขื ื”ืฉื ื™ื ืงื•ื“ JavaScript ืจืง ืžืชืืจืš. 2. ืœื ืจืง ืฉืงืฉื” ืœื”ื•ืจื™ื“ ืงื•ื“ JavaScript ืืจื•ืš ืžื”ืฉืจืช (ื›ื™ ื”ืงื•ื‘ืฅ ื™ื•ืชืจ ื’ื“ื•ืœ) ืืœื ืฉื”ืจืฆื” ื•ืคื™ืขื ื•ื— ืฉืœ ืงื•ื“ ื›ื–ื” ืžื›ื‘ื™ื“ื™ื ืขืœ ื”ื“ืคื“ืคืŸ. 3. ืื—ืจื™ ืฉื›ืชื‘ืช ืืช ื”ืงื•ื“ ืงืฉื” ืœื”ื—ืœื™ืฃ ืž import ืจื’ื™ืœ ืœ import ื“ื™ื ืžื™, ื‘ื’ืœืœ ืฉื–ื” ื™ื›ืจื™ื— ืื•ืชืš ืœืฉื ื•ืช ืืช ื›ืœ ืฉืจืฉืจืช ื”ืงืจื™ืื•ืช ืœืงืจื™ืื•ืช ืขื await. ื•ื›ืืŸ ื ื›ื ืก ื”ื—ื‘ืจ ืฉืœื ื• import defer. ืคืงื•ื“ื” ื–ืืช ื˜ื•ืขื ืช ืžื•ื“ื•ืœ ืื‘ืœ ืœื ืžื‘ืฆืขืช ืื•ืชื• ื•ื›ืš ื—ื•ืกื›ืช ืœื“ืคื“ืคืŸ ืืช ื–ืžืŸ ื”ืจื™ืฆื” ืฉืœ ืงื•ื‘ืฅ ื” JavaScript ื”ื’ื“ื•ืœ. ื–ืืช ื”ื“ื•ื’ืžื” ืžื“ืฃ ื”ืชื™ืขื•ื“ - ืชื—ื™ืœื” ืงื•ื‘ืฅ ื”ืžื•ื“ื•ืœ:
Copy
// ./some-feature.ts
initializationWithSideEffects();

function initializationWithSideEffects() {
  // ...
  specialConstant = 42;

  console.log("Side effects have occurred!");
}

export let specialConstant: number;
ื•ื”ืงื•ื“ ืฉืžืฉืชืžืฉ ื‘ื•:
import defer * as feature from "./some-feature.js";

// No side effects have occurred yet

// ...

// As soon as \specialConstant\ is accessed, the contents of the \feature\
// module are run and side effects have taken place.
console.log(feature.specialConstant); // 42
ืœืžืจื•ืช ืฉื”ืคื•ื ืงืฆื™ื” ืžื•ืคืขืœืช ื‘ืงื•ื“ ื”ืจืืฉื™ ืฉืœ some-feature.ts, ื”ื™ื ืœื ืชื•ืคืขืœ ืขื“ ืฉืžื™ืฉื”ื• ื‘ืืžืช ื™ื™ื’ืฉ ืœืขืจืš ื•ื™ื“ืคื™ืก ืื•ืชื•. ืื ื”ืฉื•ืจื” ื”ืื—ืจื•ื ื” ื‘ืงื•ื‘ืฅ ื”ืฉื ื™ ื”ื™ืชื” ืžื•ืชื ื™ืช ืื• ืœื ืžื•ืคืขืœืช ืžื›ืœ ืกื™ื‘ื” ืฉื”ื™ื, ื’ื ื’ื•ืฃ ื”ืžื•ื“ื•ืœ some-feature.ts ืœื ื”ื™ื” ืžื•ืคืขืœ. ื›ืžื•ื‘ืŸ ืฉื”ื™ื™ื ื• ื™ื›ื•ืœื™ื ืœื”ื’ื™ืข ืœืื•ืชื” ืชื•ืฆืื” ืขื await import, ืื‘ืœ ื–ื” ื‘ื“ื™ื•ืง ื”ื™ื•ืคื™: ื”ืคืจื“ื” ื‘ื™ืŸ ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ื‘ื™ืฆื•ืขื™ื ืœืกืžื ื˜ื™ืงื” ืฉืœ await ื• async. ื“ืฃ ื”ืคืจืกื•ื ื”ืžืœื ืฉืœ ื˜ื™ื™ืคืกืงืจื™ืคื˜ 5.9 ื‘ื˜ื ื–ืžื™ืŸ ื›ืืŸ ืœืกืงืจื ื™ื: https://devblogs.microsoft.com/typescript/announcing-typescript-5-9-beta/

ToCode
1 419
ื•ืื•ืœื™ AI ื‘ื›ืœืœ ืžืื˜ ืื•ืชืš? ืžื—ืงืจ ื—ื“ืฉ ืฉื”ืชืคืจืกื ืœืื—ืจื•ื ื” ื‘ื“ืง ืืช ื”ื”ืฉืคืขื” ืฉืœ AI ืขืœ ืžืชื›ื ืชื™ื ื•ื•ืชื™ืงื™ื ื‘ืคืจื•ื™ืงื˜ื™ื ื‘ื”ื ื™ืฉ ืœื”ื ื ื™ืกื™ื•ืŸ. ื‘ืžื—ืงืจ ื ื‘ื—ืจื• ืžืคืชื—ื™ื ืฉืชื•ืจืžื™ื ื›ืžื•ืช ืžืฉืžืขื•ืชื™ืช ืœืคืจื•ื™ืงื˜ ืงื•ื“ ืคืชื•ื— ื•ื”ื ื”ืชื‘ืงืฉื• ืœื‘ืฆืข ืžืฉื™ืžื” ืขืœ ื”ืคืจื•ื™ืงื˜ ื”ื–ื”. ื‘ื—ืœืง ืžื”ืžืฉื™ืžื•ืช ื”ื™ื” ืขืœื™ื”ื ืœื”ื™ืขื–ืจ ื‘ AI ื•ื‘ื—ืœืง ืื—ืจ ืืกื•ืจ ื”ื™ื” ืœื”ื ืœื”ื™ืขื–ืจ ื‘ AI. ื”ืชื•ืฆืื•ืช ืžืขื ื™ื™ื ื•ืช ื•ื‘ืžืกืคืจ ืžื™ืžื“ื™ื: 1. ื’ื ืœืคื ื™ ื•ื’ื ืื—ืจื™ ื”ืžื—ืงืจ ื”ืžืคืชื—ื™ื ื”ืจื’ื™ืฉื• ืฉื”ื ืขื‘ื“ื• ื™ื•ืชืจ ืžื”ืจ ืขื AI. 2. ื‘ืžืžื•ืฆืข ืžืคืชื—ื™ื ืžื ื•ืกื™ื ืฉื”ืฉืชืžืฉื• ื‘ AI ืขืœ ืคืจื•ื™ืงื˜ื™ื ืฉืื•ืชื ื”ื ืžื›ื™ืจื™ื ืขื‘ื“ื• ืœืื˜ ื™ื•ืชืจ ื‘ 19% ื‘ื”ืฉื•ื•ืื” ืœืžืฉื™ืžื•ืช ืฉื‘ื™ืฆืขื• ื‘ืœื™ AI. ื›ืŸ ืฉืžืขืชื ื ื›ื•ืŸ - ืœืื˜ ื™ื•ืชืจ ืžืืฉืจ ื‘ืœื™ AI. 3. ืขืœ ืžื” ื”ืœืš ื”ื–ืžืŸ? ื–ืžืŸ ื”ืงื™ื“ื•ื“ ื‘ืคื•ืขืœ ื”ืชืงืฆืจ ืžืฉืžืขื•ืชื™ืช ื‘ืขื‘ื•ื“ื” ืขื AI, ืื‘ืœ ื”ืชื•ื•ืกืคื• ื–ืžื ื™ ื”ืžืชื ื” ืœ AI, ื–ืžืŸ ื›ืชื™ื‘ืช ืคืจื•ืžืคื˜ื™ื, ื–ืžืŸ ืงืจื™ืื” ื•ื”ื‘ื ื” ืฉืœ ื”ืงื•ื“ ืฉ AI ื›ืชื‘ ื•ื–ืžืŸ ื—ืฉื™ื‘ื”. ืžื” ื›ืœ ื–ื” ืžืœืžื“ ืื•ืชื ื•? ืงื•ื“ื ื›ืœ ืฉืื™ื ื˜ื•ืื™ืฆื™ื” ื”ื™ื ืœื ื›ืœื™ ืžื“ื™ื“ื”. ื‘ืฉื‘ื™ืœ ืœื”ื‘ื™ืŸ ืื ืื ื—ื ื• ืžืงื•ื“ื“ื™ื ืžื”ืจ ืื• ืœืื˜ ื™ื•ืชืจ ืขื AI ืฆืจื™ืš ื”ืงืœื˜ื•ืช ืžืกืš ื•ืžื“ื™ื“ืช ื–ืžื ื™ื ืžื“ื•ื™ืงืช. ื“ื‘ืจ ืฉื ื™ ืฉื’ื AI ื–ื• ืžื™ื•ืžื ื•ืช ื•ื’ื ืฉื™ืžื•ืฉ ื‘ AI ื“ื•ืจืฉ ื™ื“ืข ืžืงืฆื•ืขื™ ืกืคืฆื™ืคื™. ื”ืžืคืชื—ื™ื ื‘ืžื—ืงืจ ืงื™ื‘ืœื• ืคื—ื•ืช ืž 44% ืžื”ืงื•ื“ ืฉืงืจืกืจ ื™ืฆืจ. ืคื” ื ื›ื ืก ืœืชืžื•ื ื” ืคืงื˜ื•ืจ ืฉืœ ืžื™ื•ืžื ื•ืช ืฉื™ืžื•ืฉ ื‘ AI. ื”ืžื˜ืจื” ื”ื™ื ืœื ืœืงื‘ืœ ื›ืœ ืงื•ื“ ืฉืงืจืกืจ ื™ื•ืฆืจ ืืœื ืœื’ืจื•ื ืœืงืจืกืจ ืžืจืืฉ ืœื›ืชื•ื‘ ืงื•ื“ ืฉืื ื—ื ื• ื ืกื›ื™ื ืœืงื‘ืœ ื•ืœื”ืฉืชืžืฉ ื‘ืงืจืกืจ ืœืžืฉื™ืžื•ืช ื”ืžืชืื™ืžื•ืช ืœื•. ื”ืžืชื›ื ืชื™ื ื‘ืžื—ืงืจ ื”ื•ื“ื• ืฉื”ื ืงื•ืจืื™ื ื›ืœ ืฉื•ืจื” ืฉืงืจืกืจ ื›ืชื‘. ื–ื” ืžืขื•ืœื” ื•ืžืืคื™ื™ืŸ ืžืคืชื—ื™ื ื•ื•ืชื™ืงื™ื. ืœื›ืŸ ื”ืžืฉื™ืžื” ืฉืœื ื• ื›ืžืคืชื—ื™ื ืžื ื•ืกื™ื ืฉื ืขื–ืจื™ื ื‘ืงืจืกืจ ื”ื™ื ืœืœืžื•ื“ ืื™ืš ืœื’ืจื•ื ืœืงืจืกืจ ืœื›ืชื•ื‘ ืืช ื”ืงื•ื“ ืฉืื ื—ื ื• ื”ื™ื™ื ื• ื›ื•ืชื‘ื™ื. ืจืง ื›ืฉื–ื” ืžืฆืœื™ื—, ื“ืจืš ื”ืคื™ื›ืช ื”ืคืจื•ื™ืงื˜ ืœื™ื•ืชืจ AI Friendly, ื’ื ืื™ื›ื•ืช ื”ืงื•ื“ ื•ื’ื ืžื”ื™ืจื•ืช ื”ืขื‘ื•ื“ื” ื™ื›ื•ืœื” ืœื”ืฉืชืคืจ.